P2280-激光炸弹【二维前缀和】
生活随笔
收集整理的這篇文章主要介紹了
P2280-激光炸弹【二维前缀和】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
正題
評測鏈接:https://www.luogu.org/record/show?rid=9634929
大意
有nn個東西,在5001?50015001?5001的棋盤上,炸彈一次可以炸r?rr?r的地方,使炸到的東西的價值最大。
解題思路
這道題我們可以用一個二維前綴和快速計算r*r的范圍的最大值,然后暴力枚舉
正解掃描線
具體使用方法詳見:https://blog.csdn.net/Mr_wuyongcong/article/details/81063210
代碼
#include<cstdio> #include<algorithm> using namespace std; int n,r,x,y,w,s[5011][5011],maxs; int main() {scanf("%d%d",&n,&r);for(int i=1;i<=n;i++){scanf("%d%d%d",&x,&y,&w);s[x+1][y+1]=w;}for(int i=1;i<=5001;i++)for(int j=1;j<=5001;j++)s[i][j]+=s[i-1][j]+s[i][j-1]-s[i-1][j-1];//計算前綴和for(int i=r;i<=5001;i++)for(int j=r;j<=5001;j++)maxs=max(maxs,s[i][j]-s[i-r][j]-s[i][j-r]+s[i-r][j-r]);//暴力枚舉printf("%d",maxs); }總結
以上是生活随笔為你收集整理的P2280-激光炸弹【二维前缀和】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 端午节的来历100字左右 端午的来历讲解
- 下一篇: POJ1958-Strange Towe