社区讨论
关于T1我没乘cf而丢失的6分
灌水区参与者 4已保存回复 8
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 8 条
- 当前快照
- 1 份
- 快照标识符
- @lo7ge8b3
- 此快照首次捕获于
- 2023/10/27 01:23 2 年前
- 此快照最后确认于
- 2023/10/27 01:23 2 年前
话说洛谷数据地图的 是不是比较多, 都能过诶
CPP#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 1010, mod = 998244353;
int T, id, n, m, c, f, ansc, ansf, len;
bool s[N][N];
int heng[N];
void solve(int n, int m, int c, int f)
{
memset(heng, 0, sizeof heng);
if (c == 0 && f == 0) return;
for (int j = 1; j <= m; j ++ )
{
for (int i = 1; i <= n; i ++ )
if (!heng[i])
for (int k = j; k <= m; k ++ )
if (!s[i][k]) heng[i] ++ ;
else break;
else heng[i] -- ;
for (int i = 1; i <= n; i ++ )
{
len = 0;
while (!s[i + len][j]) len ++ ;
for (int k = 2; k < len; k ++ )
{
if (heng[i] >= 2 && heng[i + k] >= 2)
{
ansc = (ansc + (heng[i] - 1) * (heng[i + k] - 1)) % mod;
ansf = (ansf + (heng[i] - 1) * (heng[i + k] - 1) * (len - k - 1)) % mod;
}
}
}
}
}
int main()
{
//freopen("plant.in", "r", stdin);
//freopen("plant.out", "w", stdout);
scanf("%d%d", &T, &id);
while (T -- )
{
ansc = ansf = 0;
memset(s, true, sizeof s);
scanf("%d%d%d%d", &n, &m, &c, &f);
for (int i = 1; i <= n; i ++ )
for (int j = 1; j <= m; j ++ )
{
char a;
cin >> a;
s[i][j] = a - '0';
}
solve(n, m, c, f);
printf("%d %d\n", ansc, ansf);
}
return 0;
}
回复
共 8 条回复,欢迎继续交流。
正在加载回复...