code forces 1051 d
Posted wangwangyu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了code forces 1051 d相关的知识,希望对你有一定的参考价值。
看的这个题解:http://www.cnblogs.com/tobyw/p/9685639.html
写的比较清楚。
矩阵类型的计数题
比赛时感觉就像是个dp,然后就跳过了。
现在看着题解写一下,感觉还算可以理解。但是没有dp的思维啊,肯定想不出来的。。
1 #include <bits/stdc++.h> 2 3 using namespace std; 4 5 6 long long dp[1005][2005][4]; 7 8 const long long mod = 998244353; 9 int main() { 10 11 12 long long n,k; 13 14 cin>>n>>k; 15 16 memset(dp,0,sizeof(dp)); 17 18 dp[1][1][0] = 1; //00 19 dp[1][2][1] = 1; //01 20 dp[1][2][2] = 1; //10 21 dp[1][1][3] = 1; //11 22 23 //cout<<k<<endl; 24 for(int i = 2; i <= n; i++) { 25 // i列最多i * 2 个联通块 26 for(int j = 1; j <= (i << 1); j++) { 27 //cout<<dp[n][k][0]<<‘ ‘<<dp[n][k][1]<<‘ ‘<<dp[n][k][2]<<‘ ‘<<dp[n][k][3]<<endl; 28 //cout<<j<<endl; 29 // 这一列填00的 30 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]; 31 dp[i][j][0] %= mod; 32 33 // 填01 34 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]; 35 dp[i][j][1] %= mod; 36 37 // 填10 38 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]; 39 dp[i][j][2] %= mod; 40 41 // 填11 42 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]; 43 dp[i][j][3] %= mod; 44 45 } 46 } 47 48 long long ans = 0; 49 //cout<<dp[n][k][0]<<‘ ‘<<dp[n][k][1]<<‘ ‘<<dp[n][k][2]<<‘ ‘<<dp[n][k][3]<<endl; 50 ans = ans + dp[n][k][0] + dp[n][k][1] + dp[n][k][2] + dp[n][k][3]; 51 ans = ans % mod; 52 //cout<<ans<<endl; 53 printf("%I64d ", ans); 54 55 56 return 0; 57 }
以上是关于code forces 1051 d的主要内容,如果未能解决你的问题,请参考以下文章
Code Forces Gym 100886J Sockets
Codeforces 1051 D.Bicolorings(DP)
code forces 1176 D. Recover it!
Docker删除报错:Error response from daemon: conflict: unable to delete 08b152afcfae (must be forced)(代码片段