NOIP2010 飛彈攔截 T3 貪心

2021-07-10 01:25:52 字數 1153 閱讀 6277

題意

經過 11年的韜光養晦,某國研發出了一種新的飛彈攔截系統,凡是與它的距離不超過其工作半徑的飛彈都能夠被它成功攔截。當工作半徑為 0時,則能夠攔截與它位置恰好相同的飛彈。但該飛彈攔截系統也存在這樣的缺陷:每套系統每天只能設定一次工作半徑。而當天的使用代價,就是所有系統工作半徑的平方和。

某天,雷達捕捉到敵國的飛彈來襲。由於該系統尚處於試驗階段,所以只有兩套系統投入工作。如果現在的要求是攔截所有的飛彈,請計算這一天的最小使用代價。

第一行包含 4個整數 x1、y1、x2、y2,每兩個整數之間用乙個空格隔開,表示這兩套飛彈攔截系統的座標分別為(x1, y1)、(x2, y2)。

第二行包含 1個整數 n,表示有 n顆飛彈。接下來 n行,每行兩個整數 x、y,中間用乙個空格隔開,表示一顆飛彈的座標(x, y)。不同飛彈的座標可能相同。

想法:

首先 第一眼看到普及組的題....就總想著用貪心來騙資料。。。。後來發現  真是貪心就能解決的  雖然比較簡單

其實只需要按照乙個飛彈攔截系統a的距離排序

講離a最近的i個飛彈都交給a

其餘的交給b

然後倒序列舉更新答案

當然這需要過載運算子或者...手寫乙個 cmp

這基本就a了

所以下面是**

#include

#include

#include

#include

using

namespace

std;

#define inf 0x3fffff

#define maxn 100000+5

int n,x1,y1,x2,y2;

int mn=inf,rb;

inline

int read()

while (ch >= '0' && ch <= '9')

return x * f;

}struct data

;data a[maxn];

bool cmp(data a,data b)

sort(a+1,a+n+1,cmp);

for(int i=n;i>0;--i)

rb=max(a[i+1].s2,rb),mn=min(mn,a[i].s1+rb);

cout

《那麼這道簡單的貪心就算解決了

NOIP 2010 飛彈攔截

題目描述 經過 11 年的韜光養晦,某國研發出了一種新的飛彈攔截系統,凡是與它的距離不超過其工作半徑的飛彈都能夠被它成功攔截。當工作半徑為 0 時,則能夠攔截與它位置恰好相同的飛彈。但該飛彈攔截系統也存在這樣的缺陷 每套系統每天只能設定一次工作半徑。而當天的使用代價,就是所有系統工作半徑的平方和。某...

noip2010 飛彈攔截

經過11 年的韜光養晦,某國研發出了一種新的飛彈攔截系統,凡是與它的距離不超過其工作半徑的飛彈都能夠被它成功攔截。當工作半徑為0 時,則能夠攔截與它位置恰好相同的飛彈。但該飛彈攔截系統也存在這樣的缺陷 每套系統每天只能設定一次工作半徑。而當天的使用代價,就是所有系統工作半徑的平方和。某天,雷達捕捉到...

noip2010飛彈攔截

洛谷的題。在此省略題目。這題還是比較水的。開始想用字首s1和與字尾s2和做。後來發現是不是。沒辦法還是自己太菜了。其實這道題很簡單。就是給兩個點,然後一系列的點,問以這兩個點為圓心的半徑平方後之和最小是多少。我們可以用結構體排序做。用乙個結構體陣列a i s1和a i s2如下 struct dra...