社区讨论

除了前两个点都RE

P5307[COCI 2018/2019 #6] Mobitel参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mi7xzmhv
此快照首次捕获于
2025/11/21 05:27
4 个月前
此快照最后确认于
2025/11/21 05:27
4 个月前
查看原帖
求大佬查错
CPP
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
const int mod = 1000000007;
int a[305][305], v[5005], r[5005], d[305][5005], f[305][5005], c;
int up(int x, int y)
{
	return x % y == 0 ? x / y : x / y + 1;
}
int main(int argc, char **argv)
{
	int n, m, N, i, j, k;
	scanf("%d%d%d", &n, &m, &N);
	for(i = 1; i <= n; i++)
		for(j = 1; j <= m; j++)
		 scanf("%d", &a[i][j]);
	v[c = 1] = N, r[N] = 1;
	for(i = 2; i <= N; i++) if(up(N, i) != up(N, i - 1)) v[++c] = up(N, i), r[up(N, i)] = c;
	d[1][r[up(N, a[1][1])]] = 1;
	for(i = 1; i <= n; i++)
	{
		for(j = 1; j < m; j++)
			for(k = 1; k <= c; k++)
				d[j + 1][r[up(v[k], a[i][j + 1])]] = (d[j + 1][r[up(v[k], a[i][j + 1])]] + d[j][k]) % mod;
		memset(f, 0, sizeof(f));
		if(i < n) 
		{
			for(j = 1; j <= m; j++)
				for(k = 1; k <= c; k++)
					f[j][r[up(v[k], a[i + 1][j])]] = (f[j][r[up(v[k], a[i + 1][j])]] + d[j][k]) % mod;
			memcpy(d, f, sizeof(d));
		}
	}
	printf("%d\n", d[m][c]);
	return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...