雷射炸彈
【問題描述】
一種新型的雷射炸彈,可以摧毀乙個邊長為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 7using
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的正方形內的所有的目標。現在地圖...