2010导弹拦截

题目描述 Description

经过11 年的韬光养晦,某国研发出了一种新的导弹拦截系统,凡是与它的距离不超过其工作半径的导弹都能够被它成功拦截。当工作半径为0 时,则能够拦截与它位置恰好相同的导弹。但该导弹拦截系统也存在这样的缺陷:每套系统每天只能设定一次工作半径。而当天的使用代价,就是所有系统工作半径的平方和。
某天,雷达捕捉到敌国的导弹来袭。由于该系统尚处于试验阶段,所以只有两套系统投入工作。如果现在的要求是拦截所有的导弹,请计算这一天的最小使用代价。

数据范围
对于10%的数据,N = 1
对于20%的数据,1 ≤ N ≤ 2
对于40%的数据,1 ≤ N ≤ 100
对于70%的数据,1 ≤ N ≤ 1000
对于100%的数据,1 ≤ N ≤ 100000,且所有坐标分量的绝对值都不超过1000。

输入描述 Input Description

第一行包含4 个整数x1、y1、x2、y2,每两个整数之间用一个空格隔开,表示这两套导弹拦截系统的坐标分别为(x1, y1)、(x2, y2)。
第二行包含1 个整数N,表示有N 颗导弹。接下来N 行,每行两个整数x、y,中间用一个空格隔开,表示一颗导弹的坐标(x, y)。不同导弹的坐标可能相同。

输出描述 Output Description

输出只有一行,包含一个整数,即当天的最小使用代价。

样例输入 Sample Input

0 0 10 0
2
-3 3
10 0

样例输出 Sample Output

18

数据范围及提示 Data Size & Hint

两个点(x1, y1)、(x2, y2)之间距离的平方是(x1− x2)^2+(y1−y2)^2。
两套系统工作半径r1、r2 的平方和,是指r1、r2 分别取平方后再求和,即r1^2+r2^2。

题解:

快排+贪心。

用f1【i】和f2【i】表示第i枚导弹距离1和2号拦截系统的距离,之后按照f1快排一下(从小到大)。枚举第i颗导弹,一号拦截系统价值是f1【i】,二号拦截系统代价是i+1~n数组f2的最大值(预处理)。

var x1,y1,x2,y2,x,y,n,i,ans:longint;

f1,f2,sum:array[0..100001]of longint;

procedure jh(var x,y:longint);

var t:longint;

begin

t:=x;

x:=y;

y:=t;

end;

procedure sort(x,y:longint);

var i,j,k:longint;

begin

i:=x;

j:=y;

k:=f1[(i+j)div 2];

while i<j do

begin

while f1[i]<k do inc(i);

while f1[j]>k do dec(j);

if i<=j then

begin

jh(f1[i],f1[j]);

jh(f2[i],f2[j]);

inc(i);

dec(j);

end;

end;

if x<j then sort(x,j);

if i<y then sort(i,y);

end;

begin

readln(x1,y1,x2,y2,n);

for i:=1 to n do

begin

readln(x,y);

f1[i]:=sqr(x-x1)+sqr(y-y1);

f2[i]:=sqr(x-x2)+sqr(y-y2);

end;

sort(1,n);

for i:=n downto 1 do

if f2[i]>sum[i+1] then sum[i]:=f2[i]

else sum[i]:=sum[i+1];

ans:=maxlongint div 2;

for i:=n downto 1 do

if f1[i]+sum[i+1]<ans then ans:=f1[i]+sum[i+1];

write(ans);

end.

时间: 2024-10-14 07:39:17

2010导弹拦截的相关文章

【BZOJ2044】三维导弹拦截 DP+(有上下界的)网络流

[BZOJ2044]三维导弹拦截 Description 一场战争正在A国与B国之间如火如荼的展开. B国凭借其强大的经济实力开发出了无数的远程攻击导弹,B国的领导人希望,通过这些导弹直接毁灭A国的指挥部,从而取得战斗的胜利!当然,A国人民不会允许这样的事情发生,所以这个世界上还存在拦截导弹. 现在,你是一名A国负责导弹拦截的高级助理. B国的导弹有效的形成了三维立体打击,我们可以将这些导弹的位置抽象三维中间的点(大小忽略),为了简单起见,我们只考虑一个瞬时的状态,即他们静止的状态. 拦截导弹设

导弹拦截

题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹. 输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统. 输入输出格式 输入格式: 一行,若干个正整数最多100个. 输

codevs 1128 导弹拦截

题目描述 Description 经过11 年的韬光养晦,某国研发出了一种新的导弹拦截系统,凡是与它的距离不超过其工作半径的导弹都能够被它成功拦截.当工作半径为0 时,则能够拦截与它位置恰好相同的导弹.但该导弹拦截系统也存在这样的缺陷:每套系统每天只能设定一次工作半径.而当天的使用代价,就是所有系统工作半径的平方和.某天,雷达捕捉到敌国的导弹来袭.由于该系统尚处于试验阶段,所以只有两套系统投入工作.如果现在的要求是拦截所有的导弹,请计算这一天的最小使用代价. 数据范围对于10%的数据,N = 1

1020 导弹拦截

难度:普及/提高- 题目类型:动规 提交次数:1 涉及知识:线性动规 题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹. 输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截

code1044 导弹拦截

分析: 这套系统最多能拦截的导弹数 就是 导弹高度的最长不上升子序列(下降或相等) 如果要拦截所有导弹最少要配备多少套这种导弹拦截系统 就是 导弹高度的最长上升子序列 因此直接用dp求就可以了 a[i]为第i个导弹的高度 dp[i]为以i结尾的最长不上升子序列的长度 方程 dp[i] = max( dp[j] ) + 1  (j=i-1 to 1, a[i]<=a[j]) 最长上升子序列 只要把条件a[i]<=a[j] 改成 a[i]>a[j] 即可

noip提高组1999 导弹拦截

导弹拦截 背景 实中编程者联盟为了培养技术精湛的后备人才,必须从基础题开始训练. 描述 某国为了防御敌国的导弹袭击,研发出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试验阶段,所以只有一套系统,因此有可能不能拦截所有的导弹. 格式 输入格式 输入数据只有一行,该行包含若干个数据,之间用半角逗号隔开,表示导弹依次飞来的高度(导弹最多有 20 枚,其高度为不大于 300

洛谷P1158 导弹拦截 排序

---恢复内容开始--- 洛谷P1158 导弹拦截 排序 算是有技巧的枚举吧 题意 用两套系统来拦截导弹,一个系统的费用等于这个系统拦截的导弹中离他最远的那颗导弹和系统的距离 的平方 排序 将每颗导弹按距离系统1 的距离排序,然后枚举n--0 选这些导弹为系统1最远能够拦截的导弹 然后就可以更新下一次 系统2要拦截的导弹 中离系统2 最远的一颗 1 #include <cstdio> 2 #include <cmath> 3 #include <cstdlib> 4 #

[dp][uestc oj][最长上升子序列] LIS N - 导弹拦截

N - 导弹拦截 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Status 某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都要高于前一发的高度.某天,雷达捕捉到敌国的导弹来袭,并观测到导弹依次飞来的高度,请计算这套系统最多能拦截多少导弹,同时,司令部想知道拦截下来的导

导弹拦截(最长下降子序列)变形

题目描述 Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹. 输入描述 Input Description 输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数) 输出描述 Output Description 输出这套系统最多能拦截多少导弹