D. Bicolorings
传送门
[http://codeforces.com/contest/1051/problem/D]
题意
相当于有个2列n行得棋盘,棋盘上的格子只能是黑或者白,问你联通块为k得方案数有多少,结果对
998244353取余
分析
三维dp下去,具体看图及代码
分析图
代码
#include <stdio.h>
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll dp[1001][2001][4];
int main()
{
int n,k1;
int i,j,k;
memset(dp,0,sizeof(dp));
dp[1][1][0]=1;
dp[1][2][1]=1;
dp[1][2][2]=1;
dp[1][1][3]=1;
for(i=2;i<1001;i++)
{
for(j=1;j<2001;j++)
{
for(k=0;k<4;k++)
{
if(k==0)
{
dp[i][j][k]=dp[i-1][j][0]+dp[i-1][j][1]+dp[i-1][j][2]+dp[i-1][j-1][3];
}
if(k==1)
{
dp[i][j][k]=dp[i-1][j-1][0]+dp[i-1][j][1]+dp[i-1][j-2][2]+dp[i-1][j-1][3];
}
if(k==2)
{
dp[i][j][k]=dp[i-1][j-1][0]+dp[i-1][j-2][1]+dp[i-1][j][2]+dp[i-1][j-1][3];
}
if(k==3)
{
dp[i][j][k]=dp[i-1][j-1][0]+dp[i-1][j][1]+dp[i-1][j][2]+dp[i-1][j][3];
}
dp[i][j][k]%=998244353;
}
}
}
while(scanf("%d %d",&n,&k1)!=EOF)
{
printf("%I64d\n",(dp[n][k1][0]+dp[n][k1][1]+dp[n][k1][2]+dp[n][k1][3])%998244353);
}
return 0;
}
D. Bicolorings的更多相关文章
- codeforces 1051 D. Bicolorings (DP)
D. Bicolorings time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...
- Codeforces 1051 D.Bicolorings(DP)
Codeforces 1051 D.Bicolorings 题意:一个2×n的方格纸,用黑白给格子涂色,要求分出k个连通块,求方案数. 思路:用0,1表示黑白,则第i列可以涂00,01,10,11,( ...
- CodeForces - 1051D Bicolorings(DP)
题目链接:http://codeforces.com/problemset/problem/1051/D 看了大佬的题解后觉着是简单的dp,咋自己做就做不来呢. 大佬的题解:https://www.c ...
- Educational Codeforces Round 51 D. Bicolorings(dp)
https://codeforces.com/contest/1051/problem/D 题意 一个2*n的矩阵,你可以用黑白格子去填充他,求联通块数目等于k的方案数,答案%998244353. 思 ...
- 2018.09.21 codeforces1051D. Bicolorings(线性dp)
传送门 sb线性DP. f[i][j][0/1/2/3]f[i][j][0/1/2/3]f[i][j][0/1/2/3]表示前i列j个连通块且第i列状态为00/01/10/11时的方案总数. 这个显然 ...
- CF1051D Bicolorings dp
水题一道 $f[i][j][S]$表示$2 * i$的矩形,有$j$个联通块,某尾状态为$S$ 然后转移就行了... #include <vector> #include <cstd ...
- CF D Bicolorings
题意 给一个2行n列的矩阵填上黑色和白色,求连通块个数为k个的填色方案数量(mod 998244353) 因为只有两行,为n-1列的矩阵增加1列的情况数只有很少,容易想到用 (i,k) 表示 i ...
- 【Codeforces 1051D】Bicolorings
[链接] 我是链接,点我呀:) [题意] 题意 [题解] dp[i][j][k]表示前i列,有j个联通块下,最后一列的状态为k的方案数 k如果为1的话,表示最后一列两个块不一样,k如果为0表示一样 枚 ...
- CF1051D Bicolorings
题目描述 咳咳,懒得复制了上面是两张图:) 解题思路 这题是一道很好的题,感觉之前做过,一开始手推状态找规律,可以用状压但是没想到 借鉴了一下大佬的dp modify数组用以累加新增的状态数 dp数组 ...
随机推荐
- Alpha冲刺!Day13 - 小结
Alpha冲刺!Day13 - 小结 各个成员今日完成的任务 今天团队极限编程12小时,从早上九点要求每个人给出一张电脑全屏截图以示开始干活,每两小时汇报进度确认已经做了什么.现在在做什么. 各节点列 ...
- jQuery.form 的最新版本是 3.14
http://www.oschina.net/news/32628/jquery-form-3-14 有日子没跟进 jQuery.form 插件了,该插件已经从 2.xx 更新到 3.xx 了,目前最 ...
- Oracle数据库里面查询字符串类型的字段不为空和为空的SQL语句:
一:查询字符串类型的字段的值不为空的SQL: select * from TB_CMS_FLGTINFO_A t where (t.fsta is not null and t.fsta <&g ...
- C#泛型约束where T : class 解释
这是参数类型约束,指定T必须是Class类型. .NET支持的类型参数约束有以下五种:where T : struct | T必须是一个结构 ...
- [零基础学python]为什么要开设本栏目
这个栏目的名称叫做"零基础学Python". 如今网上已经有不少学习python的课程.当中也不乏精品.按理说,不缺少我这个基础类型的课程了.可是,我注意到一个问题.无论是课程还是 ...
- hdu3400(三分套三分)
题意:平面上两条线段 AB,CD. A到B的速度v1,C到D的速度v2,其它地方的速度V3. 求A到D的最短时间. 解法:三分嵌套三分.首先假设AB上的点确定后.确定CD的点的确定应该是符合三分性质的 ...
- 洛谷P1144 最短路计数
题目描述 给出一个N个顶点M条边的无向无权图,顶点编号为1-N.问从顶点1开始,到其他每个点的最短路有几条. 输入输出格式 输入格式: 输入第一行包含2个正整数N,M,为图的顶点数与边数. 接下来M行 ...
- PHP的curl查看header信息的功能(包括查看返回header和请求header)
PHP的curl功能十分强大,简单点说,就是一个PHP实现浏览器的基础. 最常用的可能就是抓取远程数据或者向远程POST数据.但是在这个过程中,调试时,可能会有查看header的必要. 如下: ech ...
- 键值对的算子讲解 PairRDDFunctions
1:groupByKey def groupByKey(): RDD[(K, Iterable[V])] 根据key进行聚集,value组成一个列表,没有进行聚集,所以在有shuffle操作时候避免使 ...
- eclipse打断点调试进入到class文件中,不显示变量值的解决办法汇总
每天学习一点点 编程PDF电子书免费下载: http://www.shitanlife.com/code 问题描述:eclipse打断点调试进入到class文件中,而且监视区不显示变量结果 是由于对应 ...