题意

给一个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. Android LRUCache

    package android.util; import java.util.LinkedHashMap; import java.util.Map; /** * A cache that holds ...

  2. ruby 类方法、实例方法、类变量

    ###################### #类变量 ###################### class Cloud @@count=0 def initialize(user,passwor ...

  3. 在Ubuntu里安装Mysql5.7.23

    准备在Linux里安装Mysql,安装过程中遇到很多问题,这里记录下我成功安装的过程. 操作系统:Ubuntu 18.04 数据库:Mysql 5.7.23 安装步骤: 1.下载一个apt,下载mys ...

  4. 715B Complete The Graph

    传送门 题目大意 给出一个图,一些边带权,另一些边等待你赋权(最小赋为1).请你找到一种赋权方式,使得 s 到 t 的最短路为 L n ≤ 1e3 ,m ≤ 1e4 ,L ≤ 1e9 分析 二分所有边 ...

  5. linux文件夹删除、创建

    一.删除文件夹 rm -rf ./html2imag 二.创建文件夹 mkdir html2image

  6. Entity Framework Tutorial Basics(33):Spatial Data type support in Entity Framework 5.0

    Spatial Data type support in Entity Framework 5.0 MS SQL Server 2008 introduced two spatial data typ ...

  7. U盘刻录14.10镜像出问题的解决方法

    从几个月前的14.10 daily 版本就有U盘刻录无法启动的现象,相关bug可参见:https://bugs.launchpad.net/ubunt ... reator/+bug/1325801 ...

  8. 论道HTML5 PDF扫描版

    论道HTML5先简要介绍了如何用HTML5和CSS3制作网站,然后全面介绍了API和Canvas2D,接着介绍了如何在手机浏览器上开发HTML5相关的应用.WebSocketAPI相关的三个案例和时下 ...

  9. passing parameter to an event handler [stackoverflow]

    Q: i want to pass my List<string> as parameter using my event public event EventHandler _newFi ...

  10. GridView控件点击单元格如何获取该列的列标题

    本博文Insus.NET教你实现在GridView控件中,用mouse点击某单元格之后,希望能获取到该列的列标题. 创建一个网页,创建一个GridView控件: 去cs绑定数据给GridView控件: ...