题意

给一个2行n列的矩阵填上黑色和白色,求连通块个数为k个的填色方案数量(mod 998244353)
 
因为只有两行,为n-1列的矩阵增加1列的情况数只有很少,容易想到用 (i,k) 表示 i 列有 k个连通块的矩阵, 但是它在向 i+1 列的矩阵转移时,需要知道最后一列的状态,所以可以用 0, 1, 2, 3表示最后一列为 00, 01, 10,11状态就增加一维变成 (i,k,s),然后就是分析递推关系:
 
 
(i,k,0) 的矩阵,可以由i−1 列的矩阵添加一列 00 得到,当它的结尾为 00, 01, 10, 11时,分别会让连通块个数:不变,不变,不变,+1,所以 (i,k,0)由 (i−1,k,0), (i−1,k,1), (i−1,k,2), (i−1,k−1,3)
 
 
dp[i][k][0]=(dp[i-1][k][0]+dp[i-1][k][1]+dp[i-1][k][2]+dp[i-1][k-1][3])%mod;
 
(i,k,1)的矩阵同理,为i−1列的矩阵添加 01,当结尾为 00,01, 10, 11时,分别会使连通块的个数:+1,不变,+2,+1,所以(i,k,1)由(i−1,k−1,0),(i−1,k,1),(i−1,k−2,2),(i−1,k−1,3)得到:
dp[i][k][1]=(dp[i-1][k-1][0]+dp[i-1][k][1]+dp[i-1][k-2][2]+dp[i-1][k-1][3])%mod;
其他同理:

dp[i][k][2]=(dp[i-1][k-1][0]+dp[i-1][k-2][1]+dp[i-1][k][2]+dp[i-1][k-1][3])%mod;
dp[i][k][3]=(dp[i-1][k-1][0]+dp[i-1][k][1]+dp[i-1][k][2]+dp[i-1][k][3])%mod;

很容易得出初始化:

dp[1][2][2]=1;
dp[1][2][1]=1;
dp[1][1][0]=1;
dp[1][1][3]=1;

答案:

long long ans=0;
for(int i=0 ; i<4 ; i++)
ans=(ans+dp[n][m][i])%mod;
printf("%I64d\n",ans);

#include<bits/stdc++.h>

using namespace std ;

const int mod =  ;

long long  dp[][][];

int main( )
{
int n,m;
scanf("%d%d",&n,&m);
dp[][][]=;
dp[][][]=;
dp[][][]=;
dp[][][]=;
for(int i= ; i<=n ; i++)
{
for(int k= ; k<=min(*i,m) ; k++)
{
dp[i][k][]=(dp[i-][k][]+dp[i-][k][]+dp[i-][k][]+dp[i-][k-][])%mod;
dp[i][k][]=(dp[i-][k-][]+dp[i-][k][]+dp[i-][k-][]+dp[i-][k-][])%mod;
dp[i][k][]=(dp[i-][k-][]+dp[i-][k-][]+dp[i-][k][]+dp[i-][k-][])%mod;
dp[i][k][]=(dp[i-][k-][]+dp[i-][k][]+dp[i-][k][]+dp[i-][k][])%mod;
}
}
long long ans=;
for(int i= ; i< ; i++)
ans=(ans+dp[n][m][i])%mod;
printf("%I64d\n",ans);
return ;
}

CF D Bicolorings的更多相关文章

  1. ORA-00494: enqueue [CF] held for too long (more than 900 seconds) by 'inst 1, osid 5166'

    凌晨收到同事电话,反馈应用程序访问Oracle数据库时报错,当时现场现象确认: 1. 应用程序访问不了数据库,使用SQL Developer测试发现访问不了数据库.报ORA-12570 TNS:pac ...

  2. cf之路,1,Codeforces Round #345 (Div. 2)

     cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅.....   ...

  3. cf Round 613

    A.Peter and Snow Blower(计算几何) 给定一个点和一个多边形,求出这个多边形绕这个点旋转一圈后形成的面积.保证这个点不在多边形内. 画个图能明白 这个图形是一个圆环,那么就是这个 ...

  4. ARC下OC对象和CF对象之间的桥接(bridge)

    在开发iOS应用程序时我们有时会用到Core Foundation对象简称CF,例如Core Graphics.Core Text,并且我们可能需要将CF对象和OC对象进行互相转化,我们知道,ARC环 ...

  5. [Recommendation System] 推荐系统之协同过滤(CF)算法详解和实现

    1 集体智慧和协同过滤 1.1 什么是集体智慧(社会计算)? 集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在 Web ...

  6. CF memsql Start[c]UP 2.0 A

    CF memsql Start[c]UP 2.0 A A. Golden System time limit per test 1 second memory limit per test 256 m ...

  7. CF memsql Start[c]UP 2.0 B

    CF memsql Start[c]UP 2.0 B B. Distributed Join time limit per test 1 second memory limit per test 25 ...

  8. CF #376 (Div. 2) C. dfs

    1.CF #376 (Div. 2)    C. Socks       dfs 2.题意:给袜子上色,使n天左右脚袜子都同样颜色. 3.总结:一开始用链表存图,一直TLE test 6 (1)如果需 ...

  9. CF #375 (Div. 2) D. bfs

    1.CF #375 (Div. 2)  D. Lakes in Berland 2.总结:麻烦的bfs,但其实很水.. 3.题意:n*m的陆地与水泽,水泽在边界表示连通海洋.最后要剩k个湖,总要填掉多 ...

随机推荐

  1. javaScript之动态样式

        动态添加样式可以实现更好的视觉效果和交互效果,下面就介绍一下如何动态和删除样式: 方法一.使用obj.className来修改样式表的类名 obj.className = “style1”; ...

  2. 【274】Python 相关问题

    一.中文编码   参考:Python 中文编码 Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错. 解决方法为只要在文件开头加入如下代码,任 ...

  3. python爬虫(6)--Requests库的用法

    1.安装 利用pip来安装reques库,进入pip的下载位置,打开cmd,默认地址为 C:\Python27\Scripts 可以看到文件中有pip.exe,直接在上面输入cmd回车,进入命令行界面 ...

  4. VMware Workstation 软件 创建 Ubuntu 14.04虚拟机

    VMware Workstation 软件 创建 Ubuntu 14.04虚拟机 1. 安装VMare Workstation 软件 下载VMware 11 软件 http://www.dntk.or ...

  5. (华为机试大备战)java。多了解了解最常用的那个类库的方法对处理字符串的方法

    1.常考字符串处理:对处理字符串的方法. (a)统计字符串中特定字符的个数. 2.郭靖考了一道二维数组?? 3.多了解了解最常用的那个类库的方法.

  6. Mybatis避免出现语法错

    在使用MyBatis的时候,可能会看起来没有问题,但是代码运行的时候出现意想不到的错误. 看如下代码: <update id="updateByPrimaryKeySelective& ...

  7. eclipse中jad反编译工具的安装

    我的云盘:工具里面有 Q:为什么有必要在开发环境中配置反编译工具呢? A:  当运行引用了第三方jar包项目时,突然报出了jar包中的某个类的某一行出现异常.我们想看一下这个class文件的代码时,经 ...

  8. 数据结构_just_sort

    问题描述 给定两个序列 a b,序列 a 原先是一个单调递增的正数序列,但是由于某些原因,使得序列乱序了,并且一些数丢失了(用 0 表示).经过数据恢复后,找到了正数序列 b ,且序列 a 中 0 的 ...

  9. Python--详解TKinter类库

    为了学习python3.5的tkinter,于是我去官网找了找相关部件的一些文档,读起来有点绕口,觉得还是自己来实践实践,看看视频感觉用处会更大,然后就有了下面的一部分常用的总结, 查看tkinter ...

  10. Data Base 常用数据库之top/limit/rownum用法

    常用数据库之top/limit/rownum用法 一.常用数据库: sql server: select top 10 from users where status=1 mysql: select ...