社区讨论
80pts,#31,32TLE
P8865[NOIP2022] 种花参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @lrpzre1d
- 此快照首次捕获于
- 2024/01/23 14:44 2 年前
- 此快照最后确认于
- 2024/01/23 16:58 2 年前
为什么会T呀?大佬帮忙看看呗
CPP#include <bits/stdc++.h>
#define fre(x) freopen(#x".in", "r", stdin), freopen(#x".out", "w", stdout)
using namespace std;
typedef long long ll;
const int N = 1e3 + 5;
const int INF = 0x3f3f3f3f;
const int MOD = 998244353;
int T, id;
int n, m, c, f;
char ch[N][N];
int sum_back[N][N], sum_under[N][N];
int ans;
int main()
{
fre(plant);
scanf("%d%d", &T, &id);
while (T--)
{
memset(sum_back, 0, sizeof(sum_back));
memset(sum_under, 0, sizeof(sum_under));
scanf("%d%d%d%d", &n, &m, &c, &f);
for (int i = 1; i <= n; i++)
scanf("%s", ch[i] + 1);
for (int i = 1; i <= n; i++)
for (int j = m; j; j--)
sum_back[i][j] = (ch[i][j] == '0' ? sum_back[i][j + 1] + 1 : 0);
for (int j = 1; j <= m; j++)
for (int i = n; i; i--)
sum_under[i][j] = (ch[i][j] == '0' ? sum_under[i + 1][j] + 1 : 0);
if (c)
{
ans = 0;
for (int y1 = 1; y1 <= m; y1++)
for (int x1 = 1; x1 <= n; x1++)
for (int x2 = x1 + 2; x2 <= n && x2 <= sum_under[x1][y1] + x1 - 1; x2++)
ans = (ans + (sum_back[x1][y1] - 1) * (sum_back[x2][y1] - 1)) % MOD;
printf("%d ", ans);
}
else
{
printf("0 ");
}
if (f)
{
ans = 0;
for (int y1 = 1; y1 <= m; y1++)
for (int x1 = 1; x1 <= n; x1++)
for (int x2 = x1 + 2; x2 <= n && x2 <= sum_under[x1][y1] + x1 - 1; x2++)
ans = (ans + (sum_back[x1][y1] - 1) * (sum_back[x2][y1] - 1) * (sum_under[x2][y1] - 1)) % MOD;
printf("%d\n", ans);
}
else
{
printf("0\n");
}
}
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...