码迷,mamicode.com
首页 > 其他好文 > 详细

Bicolorings - codeforce

时间:2018-09-24 12:49:18      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:return   分享图片   const   分享   cin   ret   表示   cout   技术分享   

技术分享图片

题解:dp[ i ][ k ][0 ~ 3] :表示第 i 列状态为s(s = 0,1,2,3)时总的联通个数。

注意:dp[ i ][ k ][ 1 ] 和 dp[ i ][ k ][ 2 ] 的转移。

const int N = 1005;
const int mod = 998244353;

int n, k;
LL dp[N][2 * N][4];

int main()
{
    cin >> n >> k;
    dp[1][1][0] = 1;
    dp[1][1][3] = 1;
    dp[1][2][1] = 1;
    dp[1][2][2] = 1;
    Rep(i, 2, n) Rep(j, 1, 2 * i) {
        dp[i][j][0] = dp[i - 1][j][0] + dp[i - 1][j][1] + dp[i - 1][j][2] + dp[i - 1][j - 1][3];
        dp[i][j][3] = dp[i - 1][j - 1][0] + dp[i - 1][j][1] + dp[i - 1][j][2] + dp[i - 1][j][3];
        if (j > 1) dp[i][j][1] = dp[i - 1][j - 1][0] + dp[i - 1][j][1] + dp[i - 1][j - 2][2] + dp[i - 1][j - 1][3];
        if (j > 1) dp[i][j][2] = dp[i - 1][j - 1][0] + dp[i - 1][j - 2][1] + dp[i - 1][j][2] + dp[i - 1][j - 1][3];
        rep(t, 0, 4) dp[i][j][t] %= mod;
    }
    LL res = (dp[n][k][0] + dp[n][k][1] + dp[n][k][2] + dp[n][k][3]) % mod;
    cout << res << endl;
    return 0;
}

 

 

 

Bicolorings - codeforce

标签:return   分享图片   const   分享   cin   ret   表示   cout   技术分享   

原文地址:https://www.cnblogs.com/zgglj-com/p/9695188.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!