CF1024E Natasha, Sasha and the Prefix Sums――DP/数学(组合数)

匿名 (未验证) 提交于 2019-12-03 00:13:02

  CF1024E

   

 代码:

#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; typedef long long ll; const int maxn = 2004, mod = 998244853;  int n, m; ll dp[maxn][maxn], f[maxn][maxn], C[maxn<<1][maxn<<1];  void init() {     C[0][0] = 1LL;     for(int i = 1; i <= n + m; ++i)     {         C[i][0] = 1LL;         for(int j = 1; j <= i; ++j)             C[i][j] = (C[i-1][j-1] + C[i-1][j]) % mod;     } }  int main() {     scanf("%d%d", &n, &m);     init();     for(int i = 1; i <= m; ++i)     {         f[0][i] = 1;         for(int j = 1; j <= i; ++j)             f[j][i] = (f[j-1][i] + f[j][i-1]) % mod;     }     for(int i = 1; i <= n; ++i)         dp[i][0] = i;     for(int i = 1; i <= n; ++i)         for(int j = 1; j <= m; ++j)             dp[i][j] = (((dp[i-1][j] + C[i+j-1][j] + dp[i][j-1] - C[i+j-1][i] + f[i][j-1]) % mod) + mod) % mod;     printf("%lld\n", dp[n][m]);     return 0; }
View Code

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!