【NOIP2010】洛谷1158 导弹拦截
2016-11-08 15:48
260 查看
题目描述
经过 11 年的韬光养晦,某国研发出了一种新的导弹拦截系统,凡是与它的距离不超过其工作半径的导弹都能够被它成功拦截。当工作半径为 0
时,则能够拦截与它位置恰好相同的导弹。但该导弹拦截系统也存在这样的缺陷:每套系统每天只能设定一次工作半径。而当天的使用代价,就是所有系统工作半径的平方和。
某天,雷达捕捉到敌国的导弹来袭。由于该系统尚处于试验阶段,所以只有两套系统投入工作。如果现在的要求是拦截所有的导弹,请计算这一天的最小使用代价。
输入输出格式 输入格式:
第一行包含 4 个整数x1、y1、x2、y2,每两个整数之间用一个空格隔开,表示这两套导弹拦截系统的坐标分别为(x1, y1)、(x2,
y2)。 第二行包含 1 个整数 N,表示有 N颗导弹。接下来 N行,每行两个整数 x、y,中间用 一个空格隔开,表示一颗导弹的坐标(x,
y)。不同导弹的坐标可能相同。
输出格式:
输出文件名 missile.out。
输出只有一行,包含一个整数,即当天的最小使用代价。
把所有导弹按照离1号系统的距离排序,这样1号系统拦截的一定是从左边起连续的一段,2号需要拦截的就是剩下的部分。O(n)扫一遍即可求出最小值。
经过 11 年的韬光养晦,某国研发出了一种新的导弹拦截系统,凡是与它的距离不超过其工作半径的导弹都能够被它成功拦截。当工作半径为 0
时,则能够拦截与它位置恰好相同的导弹。但该导弹拦截系统也存在这样的缺陷:每套系统每天只能设定一次工作半径。而当天的使用代价,就是所有系统工作半径的平方和。
某天,雷达捕捉到敌国的导弹来袭。由于该系统尚处于试验阶段,所以只有两套系统投入工作。如果现在的要求是拦截所有的导弹,请计算这一天的最小使用代价。
输入输出格式 输入格式:
第一行包含 4 个整数x1、y1、x2、y2,每两个整数之间用一个空格隔开,表示这两套导弹拦截系统的坐标分别为(x1, y1)、(x2,
y2)。 第二行包含 1 个整数 N,表示有 N颗导弹。接下来 N行,每行两个整数 x、y,中间用 一个空格隔开,表示一颗导弹的坐标(x,
y)。不同导弹的坐标可能相同。
输出格式:
输出文件名 missile.out。
输出只有一行,包含一个整数,即当天的最小使用代价。
把所有导弹按照离1号系统的距离排序,这样1号系统拦截的一定是从左边起连续的一段,2号需要拦截的就是剩下的部分。O(n)扫一遍即可求出最小值。
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int oo=0x3f3f3f3f; struct miss { int x,y,dis; bool operator < (const miss &mm) const { return dis<mm.dis; } }a[100010]; int d(int x1,int y1,int x2,int y2) { return (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2); } int n,x1,x2,y1,y2; int main() { int i,mx,ans; scanf("%d%d%d%d%d",&x1,&y1,&x2,&y2,&n); for (i=1;i<=n;i++) { scanf("%d%d",&a[i].x,&a[i].y); a[i].dis=d(a[i].x,a[i].y,x1,y1); } sort(a+1,a+n+1); mx=0; ans=oo; for (i=n;i>=0;i--) { if (i<n) mx=max(mx,d(a[i+1].x,a[i+1].y,x2,y2)); ans=min(ans,mx+a[i].dis); } printf("%d\n",ans); }
相关文章推荐
- NOIP2010第一道 ---导弹拦截(摘自洛谷题解)
- NOIP2010第三题 ---接水问题(摘自洛谷题解)
- 题目:[NOIP2010普及组]导弹拦截
- NOIP 2010 导弹拦截
- 【NOIP2010】洛谷1541 乌龟棋
- 洛谷 P1541 [NOIP2010 T2] 乌龟棋
- 洛谷P1514 [NOIP2010提高组T4]引水入城
- 【洛谷1541】【CJOJ1087】【NOIP2010】乌龟棋
- 洛谷 P1525 [NOIP2010 T3] 关押罪犯
- [NOIP2010] 提高组 洛谷P1540 机器翻译
- NOIP2010第四题 ---三国游戏(摘自洛谷题解)
- 洛谷 P1525 关押罪犯==codevs 1069 关押罪犯[NOIP 2010]
- 【题解】NOIP普及组 洛谷P1020 导弹拦截
- 洛谷 1514 [NOIP2010]引水入城 bfs+贪心
- 洛谷 P1514 [NOIP2010 T4] 引水入城
- |洛谷|NOIP2010|搜索|贪心|P1514 引水入城
- [NOIP 2010] 导弹拦截
- 【NOIP2010】洛谷1514 引水入城
- |洛谷|NOIP2010|搜索|P1378 油滴扩展
- 【洛谷1541】【CJOJ1087】【NOIP2010】乌龟棋