雷射炸彈
一種新型的雷射炸彈,可以摧毀乙個邊長為r的正方形內的所有的目標。現在地圖上有n(n<=10000)個目標,用整數xi,yi(其值在[0,5000])表示目標在地圖上的位置,每個目標都有乙個價值。雷射炸彈的投放是通過衛星定位的,但其有乙個缺點,就是其爆破範圍,即那個邊長為r的正方形的邊必須和x,y軸平行。若目標位於爆破正方形的邊上,該目標將不會被摧毀。
輸入格式:
輸入檔名為input.txt
輸入檔案的第一行為正整數n和正整數r,接下來的n行每行有3個正整數,分別表示 xi,yi ,vi 。
輸出格式:
輸出檔名為output.txt
輸出檔案僅有乙個正整數,表示一顆炸彈最多能炸掉地圖上總價值為多少的目標(結果不會超過32767)。
輸入樣例#1:
2 1
0 0 1
1 1 1
輸出樣例#1:
1本題為字首和;
本題是很模板的字首和題目了,先處理出字首和,然後再暴力列舉每個點,得出答案即可。a[i][j]表示從(0,0)到(i,j)的價值總和
那麼怎麼求字首和呢?這裡我用乙個圖來解釋。假設我們要求中間的小埋色方塊的價值,我們就可以用劃線方塊減掉原諒綠和基佬紫方塊。但實際操作只允許我們減起點為(0,0)的方塊,所以我們就改用劃線方塊減掉姨媽紅圈圈,再加上重複減的基佬紫方塊。
本題地圖的起點是(0,0),所以陣列是0~5000的,記得迴圈到5001哦(畢竟一共5001個數嘛)
#include
#include
#include
#include
using
namespace
std;
int n,r,ans;
int a[5010][5010];
int main()
for (int i=1; i<=5001; i++)
for (int j=1; j<=5001; j++)
a[i][j]+=a[i-1][j]+a[i][j-1]-a[i-1][j-1];//字首和
for (int i=r; i<=5001; i++)
for (int j=r; j<=5001; j++)
ans=max(ans,a[i][j]+a[i-r][j-r]-a[i-r][j]-a[i][j-r]);//暴力列舉
printf("%d",ans);
return
0;}
P2280 HNOI2003 雷射炸彈
輸入輸出格式 輸入格式 輸入檔名為input.txt 輸入檔案的第一行為正整數n和正整數r,接下來的n行每行有3個正整數,分別表示 xi,yi vi 輸出格式 輸出檔名為output.txt 輸出檔案僅有乙個正整數,表示一顆炸彈最多能炸掉地圖上總價值為多少的目標 結果不會超過32767 輸入樣例 1...
P2280 HNOI2003 雷射炸彈
輸入格式 輸入檔名為input.txt 輸入檔案的第一行為正整數n和正整數r,接下來的n行每行有3個正整數,分別表示 xi,yi vi 輸出格式 輸出檔名為output.txt 輸出檔案僅有乙個正整數,表示一顆炸彈最多能炸掉地圖上總價值為多少的目標 結果不會超過32767 輸入樣例 1 2 1 0 ...
洛谷P2280 HNOI2003 雷射炸彈
題目描述 輸入輸出格式 輸入格式 輸入檔名為input.txt 輸入檔案的第一行為正整數n和正整數r,接下來的n行每行有3個正整數,分別表示 xi,yi vi 輸出格式 輸出檔名為output.txt 輸出檔案僅有乙個正整數,表示一顆炸彈最多能炸掉地圖上總價值為多少的目標 結果不會超過32767 輸...