博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SSL-ZYC 抓捕嫌疑犯
阅读量:5291 次
发布时间:2019-06-14

本文共 1603 字,大约阅读时间需要 5 分钟。

题目大意:

小Z接到命令去跟踪一个嫌疑犯。他一路跟踪走进一家商场,忽然那个人不见了。就在他焦急万分之际,耳机里响起了指挥部长官的声音:小Z听着,据我们监视,在你周围的人中,嫌疑犯距你第k远,请快速确认目标,实施抓捕!
给出小Z的当前置和周围所有人的位置,请你帮助小Z确认哪些人可能是嫌疑犯。
注意:嫌疑犯可能有多个!


思路:

这道题有点暴力模拟的成分。我们先用勾股定理求出每个人与小Z的距离,然后快排,最后再找出答案。
勾股定理详情见我博客


代码:

#include 
#include
#include
using namespace std;int x,y,n,m,xx,yy,sum,k,a[30001],b[30001],i,j;double f[30002];char c;void sorts(int l,int r) //快排代码 { int i,j; double t,z; i=l; j=r; z=f[(i+j)/2]; do { while (f[i]
z) j--; if (i<=j) { t=f[i]; f[i]=f[j]; f[j]=t; swap(a[i],a[j]); swap(b[i],b[j]); i++; j--; } } while (i
l) sorts(l,j);}void sortt(int l,int r) //也是快排代码 { int i,j,z; double t; i=l; j=r; z=(i+j)/2; do { while (a[i]
a[z]||(a[j]==a[z]&&b[j]>b[z])) j--; if (i<=j) { swap(a[i],a[j]); swap(b[i],b[j]); i++; j--; } } while (i<=j); if (i
l) sortt(l,j);}int main(){ freopen("suspect.in","r",stdin); freopen("suspect.out","w",stdout); f[30001]=2147483646; scanf("%d%d%d%d",&x,&y,&n,&m); for (i=1;i<=n;i++) { scanf("%d%d",&a[i],&b[i]); f[i]=sqrt((x-a[i])*(x-a[i])+(y-b[i])*(y-b[i])); //勾股定理计算距离 } sorts(1,n); //快排 sum=0; for (i=n;i>=1;i--) //寻找距离小Z第k远的人 { if (f[i]!=f[i+1]) sum++; if (sum==m) break; } j=i-1; sum=1; while (f[j]==f[i]) //记录有多少个距离他第k远的人 { j--; sum++; } j++; printf("%d\n",sum); sortt(j,i); //快排 for (int q=j;q<=i;q++) printf("%d %d\n",a[q],b[q]); scanf("%c",&c); return 0;}

转载于:https://www.cnblogs.com/hello-tomorrow/p/9313135.html

你可能感兴趣的文章
C# 高斯消元项目运用
查看>>
WUST 设计模式 实验一 单例模式的应用
查看>>
Web service(一)
查看>>
Github为什么没有记录你的Contributions
查看>>
<php>Ajax基本格式
查看>>
mybatis中的多条件查询
查看>>
C# WebBrowser 抓图获取网页验证码
查看>>
Linux 终端输入保存到一个文件中
查看>>
未加载opencv_world330.pdb
查看>>
Java排序算法(三):直接插入排序
查看>>
iOS 开发百问(5)
查看>>
删除单链表中某一个值
查看>>
第五周学习进度
查看>>
事务的应用
查看>>
Excel Vlookup多条件查询 , 列转行
查看>>
浅谈JS继承
查看>>
2018-2019-2 20175224 实验一《Java开发环境的熟悉》实验报告
查看>>
元素的offsetParent offsetLeft offsetTop属性
查看>>
NOI2015
查看>>
生成器表达式
查看>>