加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

【Codeforces 1051D】Bicolorings

发布时间:2020-12-14 04:33:48 所属栏目:大数据 来源:网络整理
导读:【链接】 我是链接,点我呀:) 【题意】 题意 【题解】 dp[i][j][k]表示前i列,有j个联通块下,最后一列的状态为k的方案数 k如果为1的话,表示最后一列两个块不一样,k如果为0表示一样 枚举最后一列的情况转移就好 【代码】 #include bits/stdc++.husing namespace

【链接】 我是链接,点我呀:)
【题意】


题意

【题解】


dp[i][j][k]表示前i列,有j个联通块下,最后一列的状态为k的方案数
k如果为1的话,表示最后一列两个块不一样,k如果为0表示一样
枚举最后一列的情况转移就好

【代码】

#include <bits/stdc++.h>
using namespace std;
const int maxn=1100;
const long long mod=998244353;
#define ll long long
#define mem(a,b) memset(a,b,sizeof(a))
ll dp[maxn][2*maxn][2],n,m;
int main(){
    int i,j;
    mem(dp,0);
    scanf("%I64d%I64d",&n,&m);
    dp[1][2][1]=2;dp[1][1][0]=2;
    for(i=2;i<=n;i++){
        for(j=1;j<=m;j++){
            dp[i][j][0]+=2*dp[i-1][j][1]+dp[i-1][j-1][0]+dp[i-1][j][0];
            dp[i][j][0]%=mod;
            dp[i][j][1]+=2*dp[i-1][j-1][0]+dp[i-1][j-2][1]+dp[i-1][j][1];
            dp[i][j][1]%=mod; 
        }
    }
    ll ans=(dp[n][m][0]+dp[n][m][1])%mod;
    printf("%I64dn",ans);
    return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读