經過11 年的韜光養晦,某國研發出了一種新的飛彈攔截系統,凡是與它的距離不超過其工作半徑的飛彈都能夠被它成功攔截。當工作半徑為0 時,則能夠攔截與它位置恰好相同的飛彈。但該飛彈攔截系統也存在這樣的缺陷:每套系統每天只能設定一次工作半徑。而當天的使用代價,就是所有系統工作半徑的平方和。 某天,雷達捕捉到敵國的飛彈來襲。由於該系統尚處於試驗階段,所以只有兩套系統投入工作。如果現在的要求是攔截所有的飛彈,請計算這一天的最小使用代價。
第一行包含4 個整數x1、y1、x2、y2,每兩個整數之間用乙個空格隔開,表示這兩套飛彈攔截系統的座標分別為(x1, y1)、(x2, y2)。
第二行包含1 個整數n(1 ≤ n ≤ 100000)。表示有n 顆飛彈。
接下來n 行,每行兩個整數x、y,中間用乙個空格隔開,表示一顆飛彈的座標(x, y)。不同飛彈的座標可能相同。
所有座標分量的絕對值都不超過1000。
只有一行,包含乙個整數,即當天的最小使用代價。
0 0 10 0
2 -3 3
10 0
copy
18
copy
0 0 6 0
5 -4 -2
-2 3
4 0
6 -2
9 1
copy
30
copy
每個測試點1s。
兩個點(x1, y1)、(x2, y2)之間距離的平方是(x1− x2)2+(y1−y2)2。
兩套系統工作半徑r1、r2 的平方和,是指r1、r2 分別取平方後再求和,即r12 +r22 。
樣例1說明:
樣例1 中要攔截所有飛彈,在滿足最小使用代價的前提下,兩套系統工作半徑的平方分 別為18 和0。
樣例2說明:
樣例中的飛彈攔截系統和飛彈所在的位置如下圖所示。要攔截所有飛彈,在滿足最小使用代價的前提下,兩套系統工作半徑的平方分別為20 和10。
noip2010普及組
這種最終答案受兩個因素影響的題目
想到列舉(二分)乙個因素,然後再暴力求另乙個因素
即列舉乙個系統的半徑(注意到座標絕對值範圍不超過1000)
我剛開始想到了這個方法
但我想的是每一次列舉後都掃瞄一遍
這樣的複雜度是會爆的
看了題解之後才發現列舉乙個因素的時候
因為是連續列舉嘛
所以另乙個因素的變化也是連續的(即隨著乙個系統的半徑的增大,它能覆蓋到的點就會增加,而需要另乙個系統覆蓋的點就減少這幾個)
因此想到要把點按離這個系統中心的距離排序
發現如果是遞增的話
另乙個系統取最大值不能o(1)處理
所以想到要遞減
這樣另乙個系統的最大值就好辦了
傻了傻了
吸取經驗(總是傻在這種地方)
#include#include#include#includestruct node
e[100005];
bool cmp(node a,node b)
{ return a.dis1=1;i--)
{ max=max>e[i+1].dis2?max:e[i+1].dis2;
min=min
NOIP 2010 飛彈攔截
題目描述 經過 11 年的韜光養晦,某國研發出了一種新的飛彈攔截系統,凡是與它的距離不超過其工作半徑的飛彈都能夠被它成功攔截。當工作半徑為 0 時,則能夠攔截與它位置恰好相同的飛彈。但該飛彈攔截系統也存在這樣的缺陷 每套系統每天只能設定一次工作半徑。而當天的使用代價,就是所有系統工作半徑的平方和。某...
noip2010 飛彈攔截
經過11 年的韜光養晦,某國研發出了一種新的飛彈攔截系統,凡是與它的距離不超過其工作半徑的飛彈都能夠被它成功攔截。當工作半徑為0 時,則能夠攔截與它位置恰好相同的飛彈。但該飛彈攔截系統也存在這樣的缺陷 每套系統每天只能設定一次工作半徑。而當天的使用代價,就是所有系統工作半徑的平方和。某天,雷達捕捉到...
noip2010飛彈攔截
洛谷的題。在此省略題目。這題還是比較水的。開始想用字首s1和與字尾s2和做。後來發現是不是。沒辦法還是自己太菜了。其實這道題很簡單。就是給兩個點,然後一系列的點,問以這兩個點為圓心的半徑平方後之和最小是多少。我們可以用結構體排序做。用乙個結構體陣列a i s1和a i s2如下 struct dra...