3 条题解
-
4
由于题目中说要找最远且编号小的那个,所以这题需要用排序,筛选出离追踪者最远又是编号最小的传送阵。
#include<iostream> #include<cmath> #include<algorithm> using namespace std; float _long(int x,int y,int x1,int y1){ return sqrt(pow(fabs(x-x1),2)+pow(fabs(y-y1),2)); }//求两点之间的距离 struct jtm{ int num; int x,y; }; struct mx{ int name,x,y; float ma; }; bool jntm(mx x,mx y){ if(x.ma==y.ma){ return x.name<y.name; } return x.ma>y.ma; }//排序 int main(){ int n,k,j,ans=0; cin>>n>>k>>j; jtm man[k],po[j]; jtm door[n]; for(int t=0;t<n;t++){ cin>>door[t].x>>door[t].y; door[t].num=t; } for(int t=0;t<k;t++){ cin>>man[t].x>>man[t].y; man[t].num=t; } for(int t=0;t<j;t++){ cin>>po[t].x>>po[t].y; } mx na[n]; for(int t=0;t<j;t++){ for(int i=0;i<n;i++){ na[i].ma=_long(door[i].x,door[i].y,po[t].x,po[t].y); na[i].name=i; na[i].x=door[i].x; na[i].y=door[i].y; }//记录距离、编号和坐标 sort(na,na+n,jntm); for(int i=0;i<k;i++){ if(na[0].x==man[i].x&&na[0].y==man[i].y){ ans++; break; } } } cout<<ans; return 0; }
信息
- ID
- 191
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- 递交数
- 54
- 已通过
- 15
- 上传者