萌新求助
查看原帖
萌新求助
248302
d0j1a_1701楼主2022/10/14 22:57

再改就跟题解一样了

这个c数组大小很玄学啊 全部题解的c都开到 200020002000*2000 左右啊 但 ai1e9|a_i| \le 1e9 真的不会炸掉吗

#include <iostream>
using namespace std;
const int mod = 998244353;
long long n, c[2010][2010], dp[2010], arr[2010], res;
/* 始终不知道为什么↑这里是2010 求助 */
/* 很神奇呀 这题数据不是1e9吗 */
int main() {
	cin >> n;
	c[1][1] = 1;
	for(int i = 1; i <= 2000; i++) {
		c[i][1] = c[i][i] = 1;
		for(int j = 2; j < i; j++)
			c[i][j] = (c[i - 1][j - 1] + c[i - 1][j]) % mod;
	}
	for(int i = 1; i <= n; i++)   cin >> arr[i];
	dp[n + 1] = 1;
	for(int i = n; i >= 1; i--)
		if(arr[i] > 0)
			for(long long j = i + arr[i] + 1; j <= n + 1; j++)
				dp[i] = (dp[i] + (dp[j] * 1ll * c[j - i - 1][arr[i]]) % mod) % mod;
	for(int i = 1; i <= n; i++) res = (res + dp[i]) % mod;
	cout << res << endl;
	system("pause");
	return 0;
}
2022/10/14 22:57
加载中...