time limit: 10 sec memory limit: 162 mb
submit: 1041 solved: 500
[submit][status]
一種新型的雷射炸彈,可以摧毀乙個邊長為r的正方形內的所有的目標。現在地圖上有n(n<=10000)個目標,用整數xi,yi(其值在[0,5000])表示目標在地圖上的位置,每個目標都有乙個價值。雷射炸彈的投放是通過衛星定位的,但其有乙個缺點,就是其爆破範圍,即那個邊長為r的正方形的邊必須和x,y軸平行。若目標位於爆破正方形的邊上,該目標將不會被摧毀。 0
輸入檔案的第一行為正整數n和正整數r,接下來的n行每行有3個正整數,分別表示
輸出檔案僅有乙個正整數,表示一顆炸彈最多能炸掉地圖上總價值為多少的目標(結果不會超過32767)。
2 10 0 1
1 1 11dp
題解:真是不能再暴力。
樹狀陣列的思想:
f[i][j]表示1..i,1..j這個矩陣的所有數和,這樣暴力列舉每個正方形的右下角的點,正方形內的和可以在o(1)時間內算出來
wa了一次,因為有可能出現有數的只在幾行,**:
1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9 #includeview code10 #include11
#define inf 1000000000
12#define maxn 6100
13#define maxm 500+100
14#define eps 1e-10
15#define ll long long
16#define pa pair17
using
namespace
std;
18 inline int
read()
1922
while(ch>='
0'&&ch<='9')
23return x*f;24}
25int
n,r,mx,my,ans,f[maxn][maxn];
26int
main()
2737
//cout<38
for(int i=1;i<=min(mx+r,maxn);i++)
39for(int j=1;j<=min(my+r,maxn);j++)
40
46 printf("
%d\n
",ans);
47return0;
48 }
bzoj 1218 HNOI2003 雷射炸彈
description 在長為5001的正方形矩陣中,有n個特殊的點,有相應的值。現在用乙個與x,y軸平行的長為r的正方形矩陣套點 不含邊緣 使裡面的特殊點的總值最大。input 輸入檔案的第一行為正整數n和正整數r,接下來的n行每行有3個正整數,分別表示位置與值。output 輸出檔案僅有乙個正整...
bzoj1218 HNOI2003 雷射炸彈
題目傳送門 看到十秒果斷想到暴力,結果一維字首和優化tle了,只好去 了一發二維字首和。花了幾分鐘看了一下,發現其實就是個簡單的容斥原理。以矩陣的右下角作為描述點,預處理出所有的矩陣f i j 表示從 1,1 到 i,j 所有值的和。那麼如圖所示 要求的部分就是紅色部分。設紅色部分右下角的座標為 n...
BZOJ 1218(HNOI2003) 雷射炸彈
一種新型的雷射炸彈,可以摧毀乙個邊長為r的正方形內的所有的目標。現在地圖上有n n 10000 個目標,用整數xi,yi 0 xi,yi 5000 表示目標在地圖上的位置,每個目標都有乙個價值0第一行為正整數n和正整數r,接下來的n行每行有3個正整數,分別表示xi,yi,vi 僅有乙個正整數,表示一...