洛谷2038 无线网络

题目:https://www.luogu.org/problemnew/show/P2038#sub

注意:

1,赋初始值!

2,附初始值!!

3,附初始值!!!

暴力代码:

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>

using namespace std;

int a[200][200];

int main()
{
	int i,d,n,x,y,k1,j,k,l;
	long long sum,ans1=0,ans2;
	
	freopen("a.txt","r",stdin);
	scanf("%d",&d);
	scanf("%d",&n);
	for (i=0;i<n;i++)
	{
		scanf("%d%d%d",&x,&y,&k1);
		a[x][y]=k1;
	}
	
	for (i=0;i<=128;i++)
	{
		for (j=0;j<=128;j++)
		{
			sum=0;
			for (k=max(i-d,0);k<=min(i+d,128);k++)
			{
				for (l=max(j-d,0);l<=min(j+d,128);l++)
				{
					sum+=a[k][l];
				}
			}
			if (sum>ans1)
			{
				ans1=sum;
				ans2=1;
			}
			else if (sum==ans1)
				ans2++;
		}
	}
	
	printf("%lld %lld\n",ans2,ans1);
	
	return 0;
}

 

前缀和算法莫名爆零

​
​
​
#include <cstdio>
#include <algorithm>
#include <cstring>

using namespace std;

int a[200][200];
long long sum[200][200];

int main()
{
	int i,d,n,x,y,k,j,i1,i2,j1,j2;
	long long sum1,ans1=0,ans2=0,ans;
	
	freopen("a.txt","r",stdin);
	scanf("%d%d",&d,&n);
	memset(a,0,sizeof(a));
	for (i=0;i<n;i++)
	{
		scanf("%d%d%d",&x,&y,&k);
		a[x+1][y+1]=k;
	}
	memset(sum,0,sizeof(sum));
	for (i=1;i<=129;i++)
	{
		sum1=0;
		for (j=1;j<=129;j++)
		{
			sum1+=a[i][j];
			sum[i][j]=sum[i-1][j]+sum1;
		}
	}
	for (i=1;i<=129;i++)
	{
		for (j=1;j<=129;j++)
		{
			i1=max(i-d-1,0);	i2=min(i+d,129);
			j1=max(j-d-1,0);	j2=min(i+d,129);
			ans=sum[i2][j2]-sum[i2][j1]-sum[i1][j2]+sum[i1][j1];
			if (ans>ans1)
			{
				ans1=ans;
				ans2=1;
			}
			else if (ans==ans1)
				ans2++;
		}
	}
	printf("%lld %lld\n",ans2,ans1);
	
	return 0;
}

​

​

​

错误:j2=min(j+d,129)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值