洛谷1158 飛彈攔截

2021-07-22 21:41:49 字數 1711 閱讀 6834

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

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

第一行包含 4 個整數x1、y1、x2、y2,每兩個整數之間用乙個空格隔開,表示這兩套飛彈攔截系統的座標分別為(x1, y1)、(x2, y2)。 第二行包含 1 個整數 n,表示有 n顆飛彈。接下來 n行,每行兩個整數 x、y,中間用 乙個空格隔開,表示一顆飛彈的座標(x, y)。不同飛彈的座標可能相同。

輸出只有一行,包含乙個整數,即當天的最小使用代價。

input

0 0 10 0

2 -3 3

10 0

output

18

input

0 0 6 0

5 -4 -2

-2 3

4 0

6 -2

9 1output

30

hint

兩個點(x1, y1)、(x2, y2)之間距離的平方是(x1− x2)2+(y1−y2)2。

兩套系統工作半徑 r1、r2的平方和,是指 r1、r2 分別取平方後再求和,即 r12+r22。

【樣例 1 說明】

樣例1 中要攔截所有飛彈,在滿足最小使用代價的前提下,兩套系統工作半徑的平方分

別為18 和0。

【樣例2 說明】

樣例中的飛彈攔截系統和飛彈所在的位置如下圖所示。要攔截所有飛彈,在滿足最小使

用代價的前提下,兩套系統工作半徑的平方分別為20 和10。

資料範圍

對於10%的資料,n = 1

對於20%的資料,1 ≤ n ≤ 2

對於40%的資料,1 ≤ n ≤ 100

對於70%的資料,1 ≤ n ≤ 1000

對於100%的資料,1 ≤ n ≤ 100000,且所有座標分量的絕對值都不超過1000。

設攔截系統為 a,b

按照飛彈到其中乙個攔截系統 a 的距離排序,將離 a 最近的 i 個飛彈都交給 a ,其餘給 b

倒序列舉斷點,每次更新答案

這個題被智障的錯誤卡了好久

#include

#include

#include

using

namespace

std;

int x1,y1,x2,y2,n,mn=1e9;

struct nodea[1000010];

bool cmp(const node &x ,const node &y)

int main()

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

int rb=0;

for(int i=1;i<=n;i++)

cout

0;}

洛谷 P1158 飛彈攔截

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

洛谷p1158 飛彈攔截

這道題是個有想法的列舉qwq 飛彈攔截 題目鏈結 注意 此飛彈攔截非彼飛彈攔截p1020 飛彈攔截 一道題是1999年的,然後我們現在要寫的是經過11年韜光養晦之後的飛彈攔截 solution 要不先說一說我錯誤的貪心防止踩坑?錯誤貪心1 40pts 先比較某個點到攔截系統1和2的距離,取距離較小的...

洛谷P1158 飛彈攔截 排序

恢復內容開始 洛谷p1158 飛彈攔截 排序 算是有技巧的列舉吧 題意 用兩套系統來攔截飛彈,乙個系統的費用等於這個系統攔截的飛彈中離他最遠的那顆飛彈 和系統的距離 的平方 排序 將每顆飛彈按距離系統1 的距離排序,然後列舉n 0 選這些飛彈為系統1最遠能夠攔截的飛彈 然後就可以更新下一次 系統2要...