题意:给S个传感器,每个传感器范围为R,有W堵墙,碰到墙传感器范围会少1,给P个物品,问每个物品可以被几个传感器感受到。
思路:观察数据发现R很小,可以以每个点位中心扫描穷举,(暴力的不要不要的)。
在这里主要存一下新的线段相交模板,之前写过一篇跨立的题解,那个代码是直接从从原来用pascal的时候的代码翻译过来,丑的令人发指(自己调试都要吐血了)= = 这次重新写了struct,借chao鉴xi了 miss_minor 的跨立写法#include#include #include #include #include #include typedef long long LL;using namespace std;struct point{ int x,y; point(int x=0,int y=0):x(x),y(y){} bool operator < (const point &a) const{ return a.x==x ? y p;set vis;LL dis(point a,point b){ LL x=a.x-b.x,y=a.y-b.y; return x*x+y*y;}bool xj(point p1,point p2,point p3,point p4){ //xiangjiao if (max(p1.x,p2.x) R*R) return 0; int cnt=0; for (int i=0;i R)return 0; return d<=(R-cnt)*(R-cnt); } int main(){ //freopen("fuck.in","r",stdin); int T; scanf("%d",&T); for (;T--;){ scanf("%d%d%d%d",&S,&R,&W,&P); vis.clear(); for (int i=0;i