codevs 1128 导弹拦截 (贪心)
2016-06-01 21:57
344 查看
/* 题目大体意思是两套系统好多导弹 怎样分配使得两个系统所拦截的最大半径之和最小 贪心:把距离1系统最远的 让2拦截 记好距离 然后按照距离1由远到近排序 对于每一个导弹 如果这之前的都给2拦截 则1的半径就是ri 2的半径则是前面所有的的max ans就是两者之和 我们O(n)的跑一边 边跑边维护min就好了 */ #include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #define maxn 100010 using namespace std; int n,s; struct node { int ss1; int ss2; }; node aa[maxn]; int x11,y11,x22,y22; int jisuan(int x1,int y1,int x2,int y2) { return (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2); } int cmp(const node &x,const node &y) { if(x.ss1>y.ss1)return 1; return 0; } int main() { int i; int a,b; cin>>x11>>y11>>x22>>y22>>n; for(i=1;i<=n;i++) { cin>>a>>b; int s1=jisuan(a,b,x11,y11); int s2=jisuan(a,b,x22,y22); aa[i].ss1=s1; aa[i].ss2=s2; } sort(aa+1,aa+1+n,cmp); int tot=999999999,mm=0; for(i=1;i<=n;i++) { tot=min(tot,aa[i].ss1+mm); mm=max(mm,aa[i].ss2); } cout<<tot; }
相关文章推荐
- Thread内存泄漏问题
- 最新cocoa pods的安装流程
- 模拟实现顺序表-动态的存储方式
- mysql练习
- 一步一步学习JNI(一)
- andriod eclipse 如何设置ndk-build也即NDK自动编译C/C++、JNI程序
- 将bitmap转化成字符串String
- odoo中pos模块由于删除partner导致发生(你试图访问的单据已经删除)错误的解决方法
- ELF分析 实践
- Titan java读数据的相关api使用 (初学)
- 简单的使用百度定位的功能
- 格力 大松KJFC230A空气净化器开机自动灯闪烁不工作是什么原因?
- HashMap VS WeakHashMap
- 文件结构
- html元素大小与位置讲解
- linux如何实现开机加载完图形界面后自动运行自己写的一个程序
- spring的ioc之Resource
- 单源最短路径之Dijkstra算法
- Linux sudo一些命令出现 command not found 的原因
- 课堂测试6