【解题报告】 [HNOI2003]激光炸弹

【解题报告】 [HNOI2003]激光炸弹

题目:luogu P2280

在这样可爱的夜晚,调试题目恐怕是最爽的选择了

附:https://www.luogu.org/record/list?user=136889

在这么多次失败下我终于成功了

解题思路:

前缀和与拆分

这是一道简单题,但是我却调试了那么多次没调出来,竟然是循环的问题

rp--。。

建立一个二维数组,储存某个区域的目标的数量,然后就使用一个二维前缀和,就可以弄出来了,注意因为时间的原因,在输入的时候也就直接输入了,我那么多次就是因为超时

AC代码

#include <iostream>
using namespace std;
const int maxn=5005;
int r,n;
int s[maxn][maxn];
int ans;
int x,y,w;
int max(int a,int b)
{
	return a>b? a:b;
}
int main()
{
	cin>>n>>r;
	for(int i=1;i<=n;i++)
	{
		cin>>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=0;i<=5001-r;i++)
	{
		for(int j=0;j<=5001-r;j++)
		ans=max(ans,s[i][j]-s[i+r][j]-s[i][j+r]+s[i+r][j+r]); 
	}
	cout<<ans<<endl;
	return 0;
}
posted @ 2019-08-05 23:25  wweiyi  阅读(168)  评论(0编辑  收藏  举报
js脚本