[FZYZOJ 1003] 弱弱的战壕
2015-06-06 11:55
267 查看
P1003 -- 弱弱的战壕
时间限制:1000MS内存限制:65536KB
Description
永恒和lmx正在玩一个即时战略游戏,名字嘛~~~~~~恕本人记性不好,忘了-_-b。mx在他的基地附近建立了n个战壕,每个战壕都是一个独立的作战单位,射程可以达到无限(“lmx不赢定了?!?”永恒ftING...@_@)。 但是,战壕有一个弱点,就是只能攻击它的左下方,说白了就是横纵坐标都不大于它的点(mx:“我的战壕为什么这么菜”ToT)。这样,永恒就可以从别的地方进攻摧毁战壕,从而消灭lmx的部队。
战壕都有一个保护范围,同它的攻击范围一样,它可以保护处在它左下方的战壕。所有处于它保护范围的战壕都叫做它的保护对象。这样,永恒就必须找到lmx的战壕中保护对象最多的点,从而优先消灭它。
现在,由于永恒没有时间来计算,所以拜托你来完成这个任务: 给出这n个战壕的坐标xi、yi,要你求出保护对象个数为0,1,2……n-1的战壕的个数。
Input Format
第一行,一个正整数n(1<=n<=100000)接下来n行,每行两个数xi,yi,代表第i个点的坐标 (1<=xi,yi<=32768)
注意:可能包含多重战壕的情况(即有数个点在同一坐标)
Output Format
输出n行,分别代表保护对象为0,1,2……n-1的战壕的个数。Sample Input
5 1 1 5 1 7 1 3 3 5 5
Sample Output
1 2 1 1 0
Hint
数据已更新 2014.10【题解】
先按照x坐标排个序,再根据y坐标建立树状数组优化
加读入优化0.28s,不加读入优化0.47s,所以,加上一点读入优化还是挺有必要的= =
TAT看到以前的代码,暴力50分QAQ。
#include<bits/stdc++.h> using namespace std; int n,d[33005]; int MAX=33001; struct P { int x,y; }p[100001]; int ans[100001]; int read() { int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9') {if(ch=='-') f=-1; ch=getchar();} while(ch>='0'&&ch<='9') {x=x*10+ch-'0'; ch=getchar();} return x*f; } bool cmp(P u,P v) {return (u.x<v.x)||(u.x==v.x&&u.y<v.y);} inline int lowbit(int x) {return x&(-x);} inline void add(int a,int v) { if(a<=0) return; while(a<MAX) d[a]+=v,a+=lowbit(a); } inline int sum(int a) { if(a<=0) return 0; int ret=0; while(a>0) ret+=d[a],a-=lowbit(a); return ret; } int main() { int n; n=read(); for (int i=1;i<=n;++i) p[i].x=read(),p[i].y=read(); sort(p+1,p+n+1,cmp); int cnt=1; for (int i=1;i<=n;++i) { if (p[i].x==p[i+1].x && p[i].y==p[i+1].y) {++cnt;continue;} ans[sum(p[i].y)+cnt-1]+=cnt; add(p[i].y,cnt); cnt=1; } for (int i=0;i<n;++i) printf("%d\n",ans[i]); return 0; }
View Code
相关文章推荐
- 小鹰展翅_虚函数
- 如何提升你的能力?给年轻程序员的几条建议
- KVO的坑
- Android开发的IDE、ADT、SDK、JDK、NDK等名词解释
- docker 自制镜像
- 代码片_笔记
- Java 理论与实践: 正确使用 Volatile 变量
- HDU1011
- CSDN-markdown编辑器使用说明
- Python ConfigParser模块教程
- ArcGIS操作——object name is not a regular identifier for underlaying DBMS[ArcGIS企业级数据导入错误]
- Redis/SSDB+Twemproxy的配置与使用(Mac/Linux平台)
- AngularJs轻松搞定表单验证
- 有感于滥用多线程之遍历文件目录信息
- java ClassLoader static
- Missing 64-bit support
- 轻松学习之一--Objective-C消息转发
- jdbc连接数据库
- python处理blog文件数据
- Opentstack 安装中遇到的错误锦集