題目描述
經過 11 年的韜光養晦,某國研發出了一種新的飛彈攔截系統,凡是與它的距離不超過其工作半徑的飛彈都能夠被它成功攔截。當工作半徑為 0 時,則能夠攔截與它位置恰好相同的飛彈。但該飛彈攔截系統也存在這樣的缺陷:每套系統每天只能設定一次工作半徑。而當天的使用代價,就是所有系統工作半徑的平方和。
某天,雷達捕捉到敵國的飛彈來襲。由於該系統尚處於試驗階段,所以只有兩套系統投入工作。如果現在的要求是攔截所有的飛彈,請計算這一天的最小使用代價。
輸入輸出格式
輸入格式:
第一行包含 4 個整數x1、y1、x2、y2,每兩個整數之間用乙個空格隔開,表示這兩套飛彈攔截系統的座標分別為(x1, y1)、(x2, y2)。 第二行包含 1 個整數 n,表示有 n顆飛彈。接下來 n行,每行兩個整數 x、y,中間用 乙個空格隔開,表示一顆飛彈的座標(x, y)。不同飛彈的座標可能相同。
輸出格式:
輸出檔名 missile.out。
輸出只有一行,包含乙個整數,即當天的最小使用代價。
輸入輸出樣例
輸入樣例#1:
0 0 10 0
2 -3 3
10 0
輸出樣例#1:
輸入樣例#2:
0 0 6 0
5 -4 -2
-2 3
4 0
6 -2
9 1輸出樣例#2:
說明兩個點(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。
【分析】
排序+模擬
先計算出飛彈距離1號點的距離,以此為關鍵字排序。然後求出字尾最大值,列舉分界點更新答案。
2號亦然。
【**】
#include
#include
#define inf 100000
#define fo(i,j,k) for(i=j;i<=k;i++)
using
namespace
std;
int a[505][505],mx[505],ci[505];
int main()
printf("1\n%d\n",ans);
return
0;}
洛谷p1158 飛彈攔截
這道題是個有想法的列舉qwq 飛彈攔截 題目鏈結 注意 此飛彈攔截非彼飛彈攔截p1020 飛彈攔截 一道題是1999年的,然後我們現在要寫的是經過11年韜光養晦之後的飛彈攔截 solution 要不先說一說我錯誤的貪心防止踩坑?錯誤貪心1 40pts 先比較某個點到攔截系統1和2的距離,取距離較小的...
洛谷P1158 飛彈攔截 排序
恢復內容開始 洛谷p1158 飛彈攔截 排序 算是有技巧的列舉吧 題意 用兩套系統來攔截飛彈,乙個系統的費用等於這個系統攔截的飛彈中離他最遠的那顆飛彈 和系統的距離 的平方 排序 將每顆飛彈按距離系統1 的距離排序,然後列舉n 0 選這些飛彈為系統1最遠能夠攔截的飛彈 然後就可以更新下一次 系統2要...
P1158 飛彈攔截
題目描述 經過 11年的韜光養晦,某國研發出了一種新的飛彈攔截系統,凡是與它的距離不超過其工作半徑的飛彈都能夠被它成功攔截。當工作半徑為 0時,則能夠攔截與它位置恰好相同的飛彈。但該飛彈攔截系統也存在這樣的缺陷 每套系統每天只能設定一次工作半徑。而當天的使用代價,就是所有系統工作半徑的平方和。某天,...