雷射炸彈解題報告

2022-07-07 00:48:11 字數 1341 閱讀 8698

雷射炸彈

【問題描述】

一種新型的雷射炸彈,可以摧毀乙個邊長為r的正方形內的所有的目標。現在地圖上有n(n<=10000)個目標,用整數xi,yi(其值在[0,5000])表示目標在地圖上的位置,每個目標都有乙個價值。雷射炸彈的投放是通過衛星定位的,但其有乙個缺點,就是其爆破範圍,即那個邊長為r的正方形的邊必須和x,y軸平行。若目標位於爆破正方形的邊上,該目標將不會被摧毀。

【輸入格式】輸入檔案的第一行為正整數n和正整數r,接下來的n行每行有3個正整數,分別表示xi,yi,vi。

【輸出格式】

輸出檔案僅有乙個正整數,表示一顆炸彈最多能炸掉地圖上總價值為多少的目標(結果不會超過32767)。

【樣例輸入】

2 10 0 1

1 1 1

【樣例輸出】

1這是典型的二維字首演算法,利用容斥原理進行計算。

首先計算邊界矩形的值

所以可以推到map[i][p]=map[i][p]+map[i-1][p]+map[i][p-1]-map[i-1][p-1]

最後再從i,p=r開始更新值

a=a+b+c+d-(c+d)-(b+d)+d

最後上**

1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7

using

namespace

std;

8int map[5100][5100]=;

9int n,r,maxa=0,maxb=0,maxnum=0

;10 inline int read()//

快讀 雖然這個題貌似沒有必要

1116

return

r;17}18

intmain()

1929

for(int i=2;i<=4999;i++)

33for(int i=2;i<=maxa+100;i++)

34for(int p=2;p<=maxb+100;p++)

3538

for(int i=r;i<=maxa+100;i++)

39for(int p=r;p<=maxb+100;p++)

4044 printf("%d"

,maxnum);

45return0;

46 }

99 雷射炸彈

假設邊長為2,該題就是將邊長為2的正方形從左到右平移,然後換下一行從左到右平移,邊平移邊記錄該區域內的總值,最終取乙個最大的 字首和 a 1 a 2 a 3 a n s i a 1 a 2 a i a 3 a 4 a 15 s 15 s 2 include using namespace std c...

雷射炸彈 模擬

給出乙個 5000 5000 role presentation style position relative 5000 5000 5000 5000 的矩陣,每個格仔上都有權值,求用乙個n n role presentation style position relative n n n n的框...

HNOI2003 雷射炸彈

bzoj 1218 bzoj好像改版來著?暫時關了 求出f i j 代表從 1,1 到 i,j 這個矩陣的總價值和再列舉r r的矩形就好了 題目給了10s,放心暴力 不就是字首資料嘛。mdzz bzoj description 一種新型的雷射炸彈,可以摧毀乙個邊長為r的正方形內的所有的目標。現在地圖...