算法与数据结构实验题 5.2 Missile
2016-10-08 17:28
267 查看
1、题目:
2、解题思路:
把每个点对应的两条半径求出,之后对d1进行升序排序,对应d2也改变位置。其中一个圆心的半径r1确定之后,除去第一个圆包围的点,在其余点中找到另外一个圆的最长的半径r2,此时r1+r2就是所求的包围所有点的半径之和,与最小值进行比较即可。要注意的是r1的半径可能是0,这种情况要另外考虑。
3、代码:
#include<iostream> #include<algorithm> using namespace std; struct Node { int d1; int d2; } node[100001]; int cmp(Node n1, Node n2) { return n1.d1 < n2.d1; } int main() { int x1,x2,y1,y2; int n,i,x,y; cin>>x1>>y1>>x2>>y2; cin>>n; for(i=0; i<n; i++) { cin>>x>>y; node[i].d1=(x-x1)*(x-x1)+(y-y1)*(y-y1); node[i].d2=(x-x2)*(x-x2)+(y-y2)*(y-y2); } sort(node,node+n,cmp);//对d1升序排序 int r1=0,r2=0,ans=-1; for(i=n; i>0; i--) { r1= node[i-1].d1; if(i<n) if(node[i].d2>r2) { r2=node[i].d2; } if(ans>(r1+r2)||ans<0) { ans=r1+r2; } } //r1=0时 if(node[0].d2>r2) { r2=node[0].d2; } if(ans>r2||ans<0) { ans=r2; } cout<<ans<<endl; return 0; }
相关文章推荐
- 实验5.2 函数与程序结构 2
- Packet Tracer 5.2实验(十五) 网络端口地址转换NAPT配置
- 算法与数据结构实验题 4.2 小 F 打怪
- 5.2实验练习
- 【交流】PacketTracer 5.2之SNMP实验指南 推荐
- Packet Tracer 5.2实验(十四) 网络地址转换NAT配置
- Linux(redhat5.2)基本实验之系统安全常规优化
- 算法与数据结构实验题 4.3 不知道取什么好
- packetTracer 5.2实验指南(电子书)强档下载
- Packet Tracer 5.2实验(十三) 扩展IP访问控制列表配置
- 算法与数据结构实验题 4.1 交易
- 算法与数据结构实验题 7.4 玩游戏的亚索 (最小支撑树)
- Packet Tracer 5.2实验(十二) 标准IP访问控制列表配置
- Packet Tracer 5.2实验(十一) 路由器综合路由配置
- 算法与数据结构实验题 4.3 不知道取什么好
- c#实验5.2:物体类
- 数据结构与算法实验题 5.2 排序