ACM 2017 香港區域賽 F-Nearby Bicycles(模擬)
阿新 • • 發佈:2018-12-01
https://nanti.jisuanke.com/t/19930
(uva有問題,計蒜客可以交)
題目大意:
有m輛共享單車,n個人,分別給出他們的座標,每個人有一個距離上限。
問對於每個人,到他的距離小於等於其距離上限的車的個數。
題解:
直接暴力模擬即可
注意座標的輸入輸出,需要getchar()
#include<bits/stdc++.h> #include<cstring> #define ll long long using namespace std; struct node1 { int x,y; }cir[1010]; struct node2 { int x,y,lim,num; }per[1010]; ll dis(node2 x,node1 y) { ll t=(x.x-y.x)*(x.x-y.x)+(x.y-y.y)*(x.y-y.y); return t; } int main() { int n,m; while(~scanf("%d%d",&m,&n)) { if(n==0 && m==0)return 0; getchar(); for(int i=1;i<=m;++i) { scanf("(%d,%d)",&cir[i].x,&cir[i].y); getchar(); } for(int i=1;i<=n;++i) { scanf("(%d,%d)",&per[i].x,&per[i].y); getchar(); } for(int i=1;i<=n;++i) scanf("%d",&per[i].lim); for(int i=1;i<=n;++i) { per[i].num=0; for(int j=1;j<=m;++j) if(dis(per[i],cir[j])<=((ll)per[i].lim*per[i].lim)) per[i].num++; } for(int i=1;i<n;++i) printf("%d ",per[i].num); printf("%d\n",per[n].num); } return 0; }