社区讨论

我为什么只有90分,还WA掉第一个点

P2038[NOIP 2014 提高组] 无线网络发射器选址参与者 3已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@mi7wpg8i
此快照首次捕获于
2025/11/21 04:51
4 个月前
此快照最后确认于
2025/11/21 04:51
4 个月前
查看原帖
这是代码
CPP
#include<bits/stdc++.h>
using namespace std;
long long a[200][200],f[200][200],ans[200][200],m,d,maxn=0,p=0;
void init(){
	scanf("%lld%lld",&d,&m);
	long long x,y,z;
	for(int i = 1; i <= m; i++){
		scanf("%lld%lld%lld",&x,&y,&z);
		a[x][y] = z;
	}
	return;
}
void work(){
	for(int i = 0; i <= 128; i++){
		for(int j = 0; j <= 128; j++){
			f[i][j] = a[i][j] + f[i - 1][j] + f[i][j - 1] - f[i - 1][j - 1];
		}
	}
	for(int i = 0; i <= 128; i++){
		for(int j = 0; j <= 128; j++){
			if(i + d > 128 && j + d > 128) ans[i][j] = f[i + d][j + d];
			if(i + d > 128 && j + d <= 128) ans[i][j] = f[128][j + d];
			if(i + d <= 128 && j + d > 128) ans[i][j] = f[i + d][128];
			if(i + d <= 128 && j + d <= 128) ans[i][j] = f[i + d][j + d];
			if(i + d > 128 && j - d - 1 >= 0) ans[i][j] -= f[128][j - d -1];
			if(i + d <= 128 && j - d - 1 >= 0) ans[i][j] -= f[i + d][j - d - 1];
			if(i - d - 1 >= 0 && j + d > 128) ans[i][j] -= f[i - d - 1][128];
			if(i - d - 1 >= 0 && j + d <= 128) ans[i][j] -= f[i - d - 1][j + d];
			if(i - d - 1 >= 0 && j - d - 1 >= 0) ans[i][j] += f[i - d - 1][j - d - 1];
			if(ans[i][j] >= maxn) maxn = ans[i][j];
		}
	}
	for(int i = 0; i <= 128; i++){
		for(int j = 0; j <= 128; j++){
			if(ans[i][j] == maxn) p++;
		}
	}
	printf("%lld %lld",p,maxn);
	return;
}
int main()
{
	init();
	work();
	return 0;
} 

回复

2 条回复,欢迎继续交流。

正在加载回复...