社区讨论
感觉思路没问题,但是1pts求助
P8865[NOIP2022] 种花参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @m2pkwsq0
- 此快照首次捕获于
- 2024/10/26 11:05 去年
- 此快照最后确认于
- 2025/11/04 16:06 4 个月前
CPP
#include<iostream>
#include<cstdio>
#include<cstring>
using std::ios;
using std::memset;
using std::cin;
using std::cout;
typedef long long ll;
const int maxn = 1010;
int mod = 998244353;
ll right[maxn][maxn], up[maxn][maxn], down[maxn][maxn];
int main(){
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
ll T, id;
cin >> T >> id;
while(T--){
ll n, m, c, f;
cin >> n >> m >> c >> f;
ll vc = 0, vf = 0;
char a[maxn][maxn] = {};
memset(right, 0, sizeof(right));
memset(up, 0, sizeof(up));
memset(down, 0, sizeof(down));
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
cin >> a[i][j];
}
}
for(int i = 1; i <= n; i++){
for(int j = m; j >= 1; j--){
if(a[i][j] == '0') right[i][j] = right[i][j-1]+1;
else right[i][j] = 0;
}
}
for(int i = 3; i <= n; i++){
for(int j = 1; j <= m; j++){
if(a[i-1][j] == '1' || a[i-2][j] == '1' || a[i][j] == '1') continue;
else up[i][j] = up[i-1][j] + right[i-2][j] - 1;//
//if(a[i][j] != '1') down[i][j] = down[i-1][j] + 1;这是向上延伸
}
}
for(int i = n; i >= 1; i--){
for(int j = 1; j <= m; j++){
if(a[i][j] != '1') down[i][j] = down[i+1][j] + 1;
else down[i][j] = 0;
}
}
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
vc = (vc + up[i][j] * (right[i][j]-1)) % mod;//
vf = (vf + vc * (down[i][j]-1)) % mod;//
}
}
cout << (c*vc%mod) << " " << (f*vf%mod) << "\n";
}
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...