1. 程式人生 > >P2280 [HNOI2003]激光炸彈

P2280 [HNOI2003]激光炸彈

data- 文件的 col book ext 難度 二維前綴和 -a ati

P2280 [HNOI2003]激光炸彈

    • 66通過
    • 300提交
  • 題目提供者xmyzwls
  • 標簽各省省選2003湖南雲端↑
  • 難度普及+/提高
  • 時空限制1s / 128MB

討論 題解

最新討論更多討論

  • 正在實驗中學培訓的親門
  • 其實我發現你累不累加v的值…
  • 這真的是省選題???

題目描述

技術分享

輸入輸出格式

輸入格式:

輸入文件名為input.txt

輸入文件的第一行為正整數n和正整數R,接下來的n行每行有3個正整數,分別表示 xi,yi ,vi 。

輸出格式:

輸出文件名為output.txt

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

輸入輸出樣例

輸入樣例#1:
2 1
0 0 1
1 1 1
輸出樣例#1:
1

分析

二維前綴和,先預處理出前綴和,然後枚舉右下角的點,求最大,註意循環初始條件與結束條件

代碼

 1 #include<cstdio>
 2 #include<algorithm>
 3 using namespace std;
 4 int a[5010][5010];
 5 int
main() 6 { 7 int n,r,ans = 0; 8 scanf("%d%d",&n,&r); 9 for (int x,y,z,i=1; i<=n; ++i) 10 { 11 scanf("%d%d%d",&x,&y,&z); 12 a[x+1][y+1] = z; 13 } 14 for (int i=1; i<=5001; ++i) 15 for (int j=1; j<=5001; ++j) 16 a[i][j] = a[i][j]+a[i-1
][j]+a[i][j-1]-a[i-1][j-1]; 17 for (int i=0; i<5001-r; ++i) //從0開始 18 for (int j=0; j<5001-r; ++j) 19 ans = max(ans,a[i+r][j+r]-a[i+r][j]-a[i][j+r]+a[i][j]); 20 printf("%d",ans); 21 return 0; 22 }

P2280 [HNOI2003]激光炸彈