炸彈攻擊
【故事背景】
jyy 最近迷上了一款塔防遊戲,在遊戲裡 jyy 除了建設建築,還可以使用
炸彈對螢幕上的敵人進行範圍殺傷。
【問題描述】
遊戲地圖可以簡單認為是乙個 2 維平面。
jyy 建造了 n 個建築,每個建築都是乙個圓,其中第 i 個建築的圓心位於
(x 」 , y 」 )且半徑為r 」 。
地圖上一共有 m 個敵人,乙個敵人可以近似看成乙個平面上的點,其中第 i
個敵人位於(p 」 , q 」 )。
jyy 可以使用一枚可以設定半徑的炸彈,可以設定乙個不超過 r的範圍,然
後選擇平面上的乙個點引爆,範圍內的所有敵人全部消滅。當然,由於炸彈威力
巨大,如果**範圍接觸到 jyy 的建築,那麼 jyy 的建築也會受到損傷。
(注:
如果炸彈的**範圍僅接觸到了 jyy 建築的邊界,則不會對 jyy 的建築造成損
傷;如果敵人出現在了**範圍的邊界,則該敵人被消滅)
jyy 可以自由控制炸彈的**地點和**半徑。作為乙個保守的玩家,他希
望在保證自己建築毫髮無損的情況下,消滅盡量多的敵人。
【輸入格式】
從檔案 attack.in 中讀入資料。
第一行包含三個非負整數,分別為 n,m,r。
接下來 n 行,每行 3 個整數,其中第 i 的為 x 」 , y 」 , r 」 ,表示第 i 個建築的位置
和半徑。資料保證所有建築不相交(但是有可能邊界接觸)。
接下來 m 行,每行 2 個整數,其中第 i 行為 p 」 , q 」 ,表示第 i 個敵人的位置。
【輸出格式】
輸出到檔案 attack.out 中。
輸出一行乙個整數,表示 jyy 最多可以消滅的敵人數量。
【輸入樣例 1】
1 5 3
0 0 1
3 3
-3 3
3 -3
3 0
0 3
第 6 頁
共 7 頁江蘇省省隊第一輪選拔賽
第一試 炸彈攻擊
【輸出樣例 1】
3 【輸入樣例 2】
4 10 100
0 0 3
10 0 3
10 10 3
0 10 3
0 4
0 5
0 6
5 3
5 -3
5 5
6 7
3 6
10 4
8 4
【輸出樣例 2】
5 【樣例說明】
第乙個樣例中,最佳攻擊選擇應將炸彈在 3,3 引爆並將半徑設定為 3。
【資料規模】
對於 20%的資料滿足 m = 2。
對於另外 20%的資料,滿足 n = 0;
對於另外 20%的資料,滿足 m ≤ 50;
對 於 100% 的 數 據 , 滿 足 0 ≤ n ≤ 10, 0 < m ≤ 10 d , 1 ≤ r, r 」 ≤ 20000 ,
p 」 , q 」 , x 」 , y 」 ≤ 20000。
計算幾何太弱了qwq 只會寫模擬退火》 <
對著資料調到了100…不對著資料大概可以50-80吧?
#include
#define n 20
#define m 1010
#define inf int_max
#define eps 1e-7
using namespace std
;int n,m,r,ans(0);
double dis(inf);
struct circlec[n];
struct point
point(int d)
}e[m],cur,p,tmp,l(inf),r(-inf);
inline double rand()
inline double calc(point x)
void sa(double t)
t=1000
; for (int i=1
;i<=100000;i++)
}int main()
sa(max(r.x-l.x,r.y-r.x));
printf("%d\n",ans);
return 0
;}
JSOI2016 炸彈攻擊(模擬退火)
模擬退火居然不出題答,這個出題人腦子進水了。由最小圓覆蓋那一套,最優的圓是以上三種情況之一 1.乙個答案點就是圓,半徑 0 2.兩個點連成的線段為直徑的圓 3.三點共園 直接列舉,判斷是 o m 4 的。可能可以優化掉乙個 m 然後你發現做不下去了。考慮退火,這個題直接以覆蓋的點數作為價值退火是不太...
模擬退火 JSOI2016 炸彈攻擊1
題目背景 jyy 最近迷上了一款塔防遊戲,在遊戲裡 jyy 除了建設建築,還可以使用炸彈對螢幕上的敵人進行範圍殺傷。題目描述 遊戲地圖可以簡單認為是乙個二維平面。jyy 建造了nn個建築,每個建築都是乙個圓,其中第ii個建築的圓心位於 x i,y i xi yi 且半徑為r iri 地圖上一共有mm...
JSOI2016 最佳團隊
這種最大化形如 x y 的式子的題,很容易想到分數規劃。二分答案,對於當前的mid,設d i p i mid s i 考慮到當乙個節點i被選,那麼fa i 也要被選,那麼乙個想法是選取當前最大的d,然後把它的兒子的d放入堆裡。但是這個方法是錯誤的 然而我一開始就這麼打了,只有10分 題目給出的是一棵...