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

Educational Codeforces Round 51 (Rated for Div. 2)

时间:2019-11-18 20:27:14      阅读:75      评论:0      收藏:0      [点我收藏+]

标签:href   题意   c++   closed   矩阵   进制   bit   ref   结果   

http://codeforces.com/contest/1051

 

随手捞到的以前没有补完的场,

 

 

D. Bicolorings

一个dp题,题意是,有一个2*n的矩阵,其中每个色块可黑可白,重要的是里面的连通块数,题目将给出n和k,让你求恰好有k个连通块的情况下的方案数。

从列来考虑,假设已知前一个矩阵的最后一列,和其方案数,(可以用00、01、10、11的二进制数来表示)那么当前dp[i][K][0]表示第i列有K个连通块且末尾列为00的方案数

前一列可能是00、01、10、11其中任何一个,分别加上00时连通块个数的状态为不变、+1、+1、+1,于是有dp[i][K][0] = dp[i-1][K][0] + dp[i-1][K-1][1] + dp[i-1][K-1][2] + dp[i-1][K-1][3];

其他情况类比推理一下就好了,要注意的地方是取模,分分钟爆int所以每次加法都要取一次mod最后出结果的时候也是

 

技术图片
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 const int mod =998244353 ;
 5 int n,T,k,dp[1200][2400][5];
 6 ll temp;
 7 
 8 int main(){
 9 
10     cin>>n>>k;
11     dp[1][1][0] = dp[1][1][3] = dp[1][2][1] = dp[1][2][2] = 1;
12     
13     for(int i = 2;i <= n;++i){
14         for(int k = 1;k <= (i<<1);++k){
15             temp = ((dp[i-1][k][0]+dp[i-1][k][1])%mod+dp[i-1][k][2])%mod+dp[i-1][k-1][3];
16             temp = temp % mod;
17             dp[i][k][0] = temp;
18             //第i列为00时 连通块为k可以由第i-1列的四个状态得到,接下来01,10,11时同理
19             temp =( dp[i-1][k-1][0]+dp[i-1][k][1])%mod+dp[i-1][k-1][3];
20             temp%=mod;
21             if(k>=2)temp+=dp[i-1][k-2][2],temp%=mod;
22             temp = temp % mod;
23             dp[i][k][1] = temp;
24             //
25             temp = (dp[i-1][k-1][0]+dp[i-1][k][2])%mod+dp[i-1][k-1][3];
26             temp%=mod;
27             if(k>=2)temp+=dp[i-1][k-2][1],temp%=mod;
28             temp = temp % mod;
29             dp[i][k][2] = temp;
30             //
31             temp = ((dp[i-1][k-1][0]+dp[i-1][k][1])%mod+dp[i-1][k][2])%mod+dp[i-1][k][3];
32             temp = temp % mod;
33             dp[i][k][3] = temp; 
34         }
35     }
36     ll ans = ((dp[n][k][0] + dp[n][k][1]) %mod+ dp[n][k][2] )%mod+ dp[n][k][3];ans%=mod;
37     cout<<ans<<endl;   
38 }
AC代码

 

Educational Codeforces Round 51 (Rated for Div. 2)

标签:href   题意   c++   closed   矩阵   进制   bit   ref   结果   

原文地址:https://www.cnblogs.com/h404nofound/p/11853021.html

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