Educational Codeforces Round 51 D. Bicolorings(dp)
https://codeforces.com/contest/1051/problem/D
题意
一个2*n的矩阵,你可以用黑白格子去填充他,求联通块数目等于k的方案数,答案%998244353.
思路
- 按列dp,定义状态dp[i][j][k]为前i列,有j个联通块,最后一列为k的方案数
- 处理出列状态之间的转移(会新产生多少个新的联通块)
- 注意初始化问题
#include<bits/stdc++.h>
#define P 998244353
#define ll long long
using namespace std;
int g[5][5];
ll f[1005][2005][5];
int i,j,n,m,p,q;
ll ans;
int main(){
cin>>n>>m;
g[1][2]=g[2][1]=2;
g[0][3]=g[3][0]=g[0][1]=g[0][2]=g[3][1]=g[3][2]=1;
f[1][2][1]=f[1][2][2]=f[1][1][0]=f[1][1][3]=1;
for(i=2;i<=n;i++)for(j=1;j<=m;j++)for(p=0;p<4;p++)for(q=0;q<4;q++)
if(j>g[p][q]) f[i][j][q]=(f[i][j][q]+f[i-1][j-g[p][q]][p])%P;
ans=0;
for(i=0;i<4;i++)ans=(ans+f[n][m][i])%P;
cout<<ans;
}
Educational Codeforces Round 51 D. Bicolorings(dp)的更多相关文章
- Codeforces Round #300 Quasi Binary(DP)
Quasi Binary time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- Educational Codeforces Round 42D. Merge Equals(STL)
D. Merge Equals time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...
- Educational Codeforces Round 51 (Rated for Div. 2)
做了四个题.. A. Vasya And Password 直接特判即可,,为啥泥萌都说难写,,,, 这个子串实际上是忽悠人的,因为每次改一个字符就可以 我靠我居然被hack了???? %……& ...
- Codeforces Round #219 (Div. 1)(完全)
戳我看题目 A:给你n个数,要求尽可能多的找出匹配,如果两个数匹配,则ai*2 <= aj 排序,从中间切断,分成相等的两半后,对于较大的那一半,从大到小遍历,对于每个数在左边那组找到最大的满足 ...
- Codeforces Round #624 (Div. 3)(题解)
Codeforces Round #624 (Div.3) 题目地址:https://codeforces.ml/contest/1311 B题:WeirdSort 题意:给出含有n个元素的数组a,和 ...
- CodeForces - 710E Generate a String (dp)
题意:构造一个由a组成的串,如果插入或删除一个a,花费时间x,如果使当前串长度加倍,花费时间y,问要构造一个长度为n的串,最少花费多长时间. 分析:dp[i]---构造长度为i的串需要花费的最短时间. ...
- Educational Codeforces Round 51 F. The Shortest Statement(lca+最短路)
https://codeforces.com/contest/1051/problem/F 题意 给一个带权联通无向图,n个点,m条边,q个询问,询问两点之间的最短路 其中 m-n<=20,1& ...
- Educational Codeforces Round 51 (Rated for Div. 2) G. Distinctification(线段树合并 + 并查集)
题意 给出一个长度为 \(n\) 序列 , 每个位置有 \(a_i , b_i\) 两个参数 , \(b_i\) 互不相同 ,你可以进行任意次如下的两种操作 : 若存在 \(j \not = i\) ...
- Codeforces 1051 D.Bicolorings(DP)
Codeforces 1051 D.Bicolorings 题意:一个2×n的方格纸,用黑白给格子涂色,要求分出k个连通块,求方案数. 思路:用0,1表示黑白,则第i列可以涂00,01,10,11,( ...
随机推荐
- reportviewer需要的3个引用
安装ReportViewer后其中会出现以下DLL. Microsoft.ReportViewer.ProcessingObjectModel.dll Micr ...
- vue-layer
npm: https://www.npmjs.com/package/vue-layer 原文:https://www.cnblogs.com/myIvan/p/9564502.html 1.安装 ...
- 测试用户体验相关——UI设计准则及方法
之前跟我们uxc同学聊过一些,记录下来,方便在工作中不断渗透深入和理解,能够逐渐养成比较好的审美和对UI交互问题的敏锐的觉察力. 以问题为导向来吧... 第一个问题:一个menu中的图标一定要风格一致 ...
- [LeetCode_105]Construct Binary Tree from Preorder and Inorder Traversal
题目链接 https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/ 题意 由二叉 ...
- java_2变量和运算符
1.变量 存储数据的容器. 2.变量创建的3要素 数据类型 变量名 = 变量值: 如int a = 10; 3.数据类型的自动转化 当小范围变量向大范围变量转化的时候,会发生这种情况.如int类型变 ...
- LINUX SSH修改默认22/添加端口
通常ssh远程登录的默认端口是22,但是因为端口22属于高危端口,因此很多时候作为服务器会被关掉,不过这个端口一般是可以更改或者添加的,这样除了22端口,也可以通过别的端口进行访问. 1.首先修改配置 ...
- AndroidManifest中注册application
<application android:icon="@drawable/icon1" android:label="@string/app_name" ...
- 弹出PopupWindow背景变暗的实现
弹出PopuoWindow后 代码里设置的是PopupWindow默认获取焦点 所以PopupWindow显示的时候其它控件点击是没有反应的 用到的方法是 pwMyPopWindow.setFocus ...
- linux C程序中获取shell脚本输出(如获取system命令输出)
转载自 http://blog.csdn.net/hjxhjh/article/details/7909518 1. 前言 Unix 界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些 ...
- 一位大牛整理的Python资源
Python基本安装: * http://www.python.org/ 官方标准Python开发包和支持环境,同时也是Python的官方网站: * http://www.activestate ...