社区讨论
我为什么只有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 条回复,欢迎继续交流。
正在加载回复...