Description

WYF为了保证他自己能够吃到足够多的牛排,来补充自己的脑力,所以他建了两个补给站,坐标分别为(ax,ay),(bx,by)。他有n个休息地点,第i个休息地点的坐标是(xi,yi)。每个补给站都有一个补给半径,当一个休息地点在以一个补给站为圆心,该补给站的补给半径为半径的圆中时(包括在圆周上),那个休息地点就会获得补给。现在有m个询问,每个询问会给出第一个补给站的补给半径r1和第二个补给站的补给半径r2,WYF想知道有多少个休息地点会得到补给。

Input

输入的第一行包含2个整数,n与m。
第二行包含4个整数,ax,ay,bx,by。
第3至n+2行包含2个整数x,y。
第n+3至n+m+2行包含两个整数r1,r2。

Output

输出的第1至m行包含1个整数,表示其所对应的询问的答案。

Sample Input

4 2
-1 0 2 0
0 0
1 1
2 2
0 2
3 1
1 1

Sample Output

3
1
【样例说明】
对于第一个询问,第1,2,4个休息点都能受到补给。
对于第二个询问,只有第1个休息点能受到补给。

其实这种类似于覆盖的问题还是挺好做的,因为数据并没有要求我们强制在线,所以我们可以考虑一下用离线处理。

如果把题目简化成只有一个补给站,那么处理起来就简单了,先把每个休息点离补给站的距离排个序,然后对于每一个询问进行二分查找就很容易做出来了。

但题目是有两个补给站,所以就有可能出现都被两个补给站覆盖的重复的休息点,所以只要领用刚刚的思想,且找出重复的点,把他减掉就行了。

这时候询问可以离线的特点就可以排上用场了。先假设将点按照与第 1 个补给站距离排序后存入的数组为 a,按照与第 2 个补给站距离排序后存入数组 b。将所有询问按照第 1 个补给站的半径从小到大排序。如果按顺序遍历这些询问的话,对于每个询问 我们可以动态得知a 数组中,有前 xi 个点被第 1 个补给站覆盖。显然 xi−1≤xi,即当前询问比上一个询问可能多覆盖了 xi−xi−1 个点。这时候如果给这些新覆盖的点打上标记,同时查询 b 数组中距离在指定范围内、且没有被标记的点的个数,不就避免了重复计数的情况吗?
对于有特征的区间查询,我们可以考虑用树状数组或线段树解决,最后用二分查找答案就行了,实现时要注意一下细节。个人建议用树状数组,因为这毕竟打得短吗。呵呵。。
时间复杂度大概是O(n logn+m logm) 注意要开longlong,因为求距离是会爆掉int
  
 以下在树状数组实现下的代码

#include <cstdio>
#include <cmath>
#include <iostream>
#include <cstring>
#include <algorithm>
#define fo(i,a,b) for (int i=a;i<=b;i++)
#define N 200005
#define M 100005using namespace std;struct Re
{long long x,y,z;
}b[N],Q[M];struct Samjia
{long long x,y;
}a[N];
long long n,m,ax,ay,bx,by;
long long now=0,t=1;
long long ans[M],c[N],d[N],e[N],tree[N];bool cmp(Samjia a,Samjia b)
{return (a.x<b.x);
}bool cmp2(Re a,Re b)
{return (a.x<b.x || (a.x==b.x && a.y<b.y));
}int Lowbit(int x)
{return (x&(x^(x-1)));
}int GetSum(int p)
{long long ans=0;while (p) {ans+=tree[p];p-=Lowbit(p);}return ans;
}void Change(int p)
{while (p<=n){tree[p]++;p+=Lowbit(p);}
}void Find(int l,int r,int i)
{while (l<r){int mid=(l+r)/2+1;if (e[mid]<=Q[i].y) l=mid;else r=mid-1;}ans[Q[i].z]=now+d[l]-GetSum(d[l]);
}int main()
{scanf("%lld%lld",&n,&m);scanf("%lld%lld%lld%lld",&ax,&ay,&bx,&by);fo(i,1,n){long long xx,yy;scanf("%lld%lld",&xx,&yy);a[i].x=1LL*(xx-ax)*(xx-ax)+1LL*(yy-ay)*(yy-ay);a[i].y=1LL*(xx-bx)*(xx-bx)+1LL*(yy-by)*(yy-by);}sort(a+1,a+1+n,cmp);fo(i,1,n){b[i].x=a[i].y;b[i].y=a[i].x;b[i].z=i;}sort(b+1,b+1+n,cmp2);long long wz=0;b[0].x=e[0]=-1;long long tot=0;fo(i,1,n){c[b[i].z]=i;if (b[i].x>b[wz].x){d[tot]=i-1;e[++tot]=b[i].x;wz=i;}   }d[tot]=n;fo(i,1,m){scanf("%lld%lld",&Q[i].x,&Q[i].y);Q[i].x=Q[i].x*Q[i].x;Q[i].y=Q[i].y*Q[i].y;Q[i].z=i;}sort(Q+1,Q+1+m,cmp2);fo(i,1,m){while (t<=n && a[t].x<=Q[i].x){now++;Change(c[t]);t++;}Find(0,tot,i);}fo(i,1,m) printf("%lld\n",ans[i]);return 0;
}

【五校联考2day1】补给站相关推荐

  1. 湖南长郡2021高考成绩查询时间,2021年湖南新高考六校、长郡十五校联考时间公布...

    2021年湖南新高考六校.长郡十五校联考时间公布 导读:距离2021年高考时间仅剩不到一百天,各个省份都的高三学子都进入紧张阶段.开始了各种模拟考试.2021届湖南省炎德英才大联考的考试时间也已经公布 ...

  2. 4246. 【五校联考6day2】san (Standard IO)

    4246. [五校联考6day2]san (Standard IO) Time Limits: 1000 ms  Memory Limits: 262144 KB  Detailed Limits D ...

  3. jzoj4230. 【五校联考4day1】淬炼神体(B组——Day3)

    jzoj4230. [五校联考4day1]淬炼神体 题目 Description 王仙女将你提供的答案填在<葵花宝典>上,突然,宝典发出耀眼的白光,一股强大的吸力瞬间将仙女吸入宝典中. 一 ...

  4. 【NOIP2016提高A组五校联考2】running

    题目 小胡同学是个热爱运动的好孩子. 每天晚上,小胡都会去操场上跑步,学校的操场可以看成一个由n个格子排成的一个环形,格子按照顺时针顺序从0 到n- 1 标号. 小胡观察到有m 个同学在跑步,最开始每 ...

  5. 【五校联考2015 9.5】我才不是萝莉控

    题目大意 你在一个n×nn\times n的网格图上,初始站在(1,1)(1, 1)点,要求到达(n,n)(n, n)点. 假如你现在在(x,y)(x, y)点,那么你有两种行走方式. 走到(x+1, ...

  6. jzoj4240 [五校联考5day2]游行 拓扑排序+倍增lca+线段树优化建图

    Description 恶梦是学校里面的学生会主席.他今天非常的兴奋,因为学校一年一度的学生节开始啦!! 在这次节日上总共有N个节目,并且总共也有N个舞台供大家表演.其中第i个节目的表演时间为第i个单 ...

  7. jzoj 4240.【五校联考5day2】游行 主席树优化连边+支配树

    Description 恶梦是学校里面的学生会主席.他今天非常的兴奋,因为学校一年一度的学生节开始啦!! 在这次节日上总共有N个节目,并且总共也有N个舞台供大家表演.其中第i个节目的表演时间为第i个单 ...

  8. JZOJ 4238. 【五校联考5day2】纪念碑

    Description 2034年,纪念中学决定修建校庆100周年纪念碑,作为杰出校友的你被找了过来,帮校方确定纪念碑的选址. 纪念中学的土地可以看作是一个长为n,宽为m的矩形.它由n* m个1*1的 ...

  9. 【五校联考7day1】n染色

    Description WYF画了一个极为不规则的n边形,画面太美简直不看,没有任意两条边长度是相等的.因为形状太难看了,做他同桌的CWQ看不下去了,趁着WYF上厕所的时间准备用他书包里的m种颜色的彩 ...

最新文章

  1. 用于3D摄像头的VCSEL技术
  2. Android开发——说说Adapter那点事
  3. 该死的java String
  4. 车已经买有近一个月了,技术也在提升中
  5. MPD2011 深圳站 徐锋《手机(及互联网产品)可以做得更好》要点纪要
  6. python九九乘法表教程_python教程九九乘法表
  7. J2EE事务并发控制策略总结
  8. oracle之完整性约束
  9. 携程App的网络性能优化实践
  10. Tomcat修改端口号(7.0 version)
  11. SLAM算法 - 3D激光匹配算法
  12. 推荐几款网页幻灯片js库
  13. opencv摄像头捕获视频
  14. 换个角度深入理解GlusterFS
  15. 条码扫描模块通过什么编程才能使用呢?
  16. 《佛密诸事》第二章 宇宙诸现象
  17. MQ,究竟如何做到削峰填谷?
  18. dev C++遇到endl无法调试的解决方法
  19. webService序列化xml 以及去掉删除string xmlns =“http://tempuri.org/”
  20. IOS微信浏览器返回事件popstate监听

热门文章

  1. 2022流动式起重机司机考试试题及在线模拟考试
  2. Tensorflow车牌识别(含完整源代码及训练集)
  3. 开源记忆卡片 anki 2.1.18最新版本介绍及安装
  4. 黑马毕向东Java课程笔记(day19-11——19-22)IO字节流:字节流及其读取、字节流缓冲区、自定义字节流(读取)的缓冲区、读取键盘的输入、读取/写入转换流、流操作规律
  5. 洛谷4438 [HNOI/AHOI2018]道路
  6. 脑海链ceo谢宏中获授权组织币改实验区教育培训行业分群
  7. 解决了java+matlab混编+web(jsp)调用Matlab,网页中显示Figure,详细实例
  8. 专业的python培训机构吃透Python的金融实务应用
  9. chrome中行网银插件(Linux下可用,可以淘宝支付宝)
  10. 运势运程星座运势算命程序源码公众号版小程序源码