社区讨论
解决#8WA的很赖皮的逃课方法(#8原理求解)
P2280[HNOI2003] 激光炸弹参与者 4已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @mhj1pmi5
- 此快照首次捕获于
- 2025/11/03 19:17 4 个月前
- 此快照最后确认于
- 2025/11/03 19:17 4 个月前
#8的输出是10725,利用找不到最大值时原数值不变的特判就能逃课(完全不建议这么做)
在想真的没有负价值地块吗?怎么想也想不到一种可能的数据,使得炸弹右下角可以在maxx或者maxy之外
以下为神秘修改后过了#8但是只AC三个的代码(改之前只有#8wa)
CPP以下为神秘修改后过了#8但是只AC三个的代码(改之前只有#8wa)
#include <bits/stdc++.h>
using namespace std;
int price[5140][5140] = {0};
int lsum[5140][5140] = {0};
int n,m;
int x,y,v;
int manx = -1,many = -1;
int main()
{
cin >> n >> m;
while(n--)
{
cin >> x >> y >> v;
price[x+1][y+1] += v;
manx = max(x+1,manx);
many = max(y+1,many);
}
for(int i = 1; i <= max(manx,many); i++)
{// ^改了此处,原为manx^
for(int j = 1; j <= max(manx,many); j++)
{
lsum[i][j] = price[i][j] + lsum[i-1][j] + lsum[i][j-1] - lsum[i-1][j-1];
}
}
int manv = -1;
for( int i = 1; i <= manx/*x+1*/; i++)
{
for(int j = 1; j <= many; j++)
{
manv = max(manv,lsum[i-1+m][j-1+m] - lsum[i-1][j-1+m] - lsum[i-1+m][j-1] + lsum[i-1][j-1]);
}
}
cout << manv;
}
回复
共 5 条回复,欢迎继续交流。
正在加载回复...