COJ 1687:Set
2016-03-09 10:46
288 查看
题意:在第一象限,所有坐标都为整数,有N个点有哥布林,再有M个圆,圆心半径已知,在圆内的哥布林会挂掉,问最后剩几个哥布林活着
思路:这里要注意到,虽然N和M很大,但是r很小,坐标范围也不大(1e4)
我们对于每一个x轴上的整数点开一个set,保存在这条线上的哥布林的纵坐标
对于每一个圆,我们枚举它覆盖的x范围[x-r,x+r],对于每一个i值,求出覆盖的y的范围low,high
再在相应的Set里求出[low,high]里的元素个数,加到cnt里,再全部erase掉
最后答案就是N-cnt咯
注意要用multiset,因为有的哥布林坐标是重复的
View Code
思路:这里要注意到,虽然N和M很大,但是r很小,坐标范围也不大(1e4)
我们对于每一个x轴上的整数点开一个set,保存在这条线上的哥布林的纵坐标
对于每一个圆,我们枚举它覆盖的x范围[x-r,x+r],对于每一个i值,求出覆盖的y的范围low,high
再在相应的Set里求出[low,high]里的元素个数,加到cnt里,再全部erase掉
最后答案就是N-cnt咯
注意要用multiset,因为有的哥布林坐标是重复的
#include"cstdio" #include"queue" #include"cmath" #include"stack" #include"iostream" #include"algorithm" #include"cstring" #include"queue" #include"map" #include"set" #include"vector" #define ll long long #define mems(a,b) memset(a,b,sizeof(a)) #define ls pos<<1 #define rs pos<<1|1 using namespace std; const int MAXN = 10500; const int MAXM = 100500; const int INF = 0x3f3f3f3f; struct node{ int x,y,r; }g[MAXM],p[2*MAXN]; multiset<int> s[MAXN]; int ans; void Clear(int x,int y,int r){ for(int i=x-r<=0?0:x-r;i<=x+r;i++){ int h=floor(sqrt((double)r*r-(x-i)*(x-i))); multiset<int>::iterator l=s[i].lower_bound(y-h); multiset<int>::iterator r=s[i].upper_bound(y+h); if(l!=r){ multiset<int>::iterator L=l; for(;L!=r;L++) ans++; s[i].erase(l,r); } } } int main(){ int n,m; //freopen("in.txt","r",stdin); while(~scanf("%d",&n)){ for(int i=0;i<n;i++) scanf("%d %d",&g[i].x,&g[i].y); for(int i=0;i<MAXN;i++) s[i].clear(); for(int i=0;i<n;i++) s[g[i].x].insert(g[i].y); scanf("%d",&m); for(int i=0;i<m;i++) scanf("%d%d%d",&p[i].x,&p[i].y,&p[i].r); ans=0; for(int i=0;i<m;i++) Clear(p[i].x,p[i].y,p[i].r); printf("%d\n",n-ans); } return 0; }
View Code
相关文章推荐
- Oracle的rownum原理和使用
- pymysql写入数据失败
- Android Service自启动注意事项分析
- CloudTest 事务监控:千呼万唤始出来
- 关于分布式事务、两阶段提交、一阶段提交、Best Efforts 1PC模式和事务补偿机制的研究
- 关于分布式事务、两阶段提交、一阶段提交、Best Efforts 1PC模式和事务补偿机制的研究
- 关于分布式事务、两阶段提交、一阶段提交、Best Efforts 1PC模式和事务补偿机制的研究
- 关于分布式事务、两阶段提交、一阶段提交、Best Efforts 1PC模式和事务补偿机制的研究
- 关于分布式事务、两阶段提交、一阶段提交、Best Efforts 1PC模式和事务补偿机制的研究
- java调用JNI总结
- 服务器时间的转换和截取
- 生活之为何要十跪父母亲
- JMS入门(五)--消息头
- 随机抽奖
- redis学习笔记
- 洪涝有源淹没算法及淹没结果分析
- python之import机制
- SVM初探
- 存储过程与触发器的区别
- 【OpenStack】OpenStack系列1之OpenStack本地开发环境搭建&&向社区贡献代码