CF1051D Bicolorings
题目描述


咳咳,懒得复制了上面是两张图:)
解题思路
这题是一道很好的题,感觉之前做过,一开始手推状态找规律,可以用状压但是没想到
借鉴了一下大佬的dp
modify数组用以累加新增的状态数
dp数组表示前i列第j个连通块,a,b表示该列的状态,转移方程见代码
下面就是美丽的代码了
AC Code
#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
#define P (LL)(998244353) typedef long long LL;
typedef long double ld;
typedef unsigned long long ULL; using namespace std; const int MAXN = + ;
const int MAXK = MAXN << ;
int dp[MAXN][MAXK][][];
int modify[][][][];
void pre() {
modify[][][][] = ; modify[][][][] = ; modify[][][][] = ; modify[][][][] = ;
modify[][][][] = ; modify[][][][] = ; modify[][][][] = ; modify[][][][] = ;
modify[][][][] = ; modify[][][][] = ; modify[][][][] = ; modify[][][][] = ;
modify[][][][] = ; modify[][][][] = ; modify[][][][] = ; modify[][][][] = ;
}
int main() {
int n , k;
cin>>n>>k;
pre();
dp[][][][] = dp[][][][] = ;
dp[][][][] = dp[][][][] = ; for(int i = ; i <= n; i++)
for(int j = ; j <= k; j++)
for(int a = ; a < ; a++)
for(int b = ; b < ; b++)
for(int A = ; A < ; A++)
for(int B = ; B < ; B++) {
int block = modify[A][B][a][b];
if(j >= block) dp[i][j][a][b] = (dp[i][j][a][b] + dp[i - ][j - block][A][B]) % P;
}
int ans = ;
for(int A = ; A < ; A++)
for(int B = ; B < ; B++)
ans = (ans + dp[n][k][A][B]) % P;
cout<<ans;
return ;
}
CF1051D Bicolorings的更多相关文章
- CF1051D Bicolorings dp
水题一道 $f[i][j][S]$表示$2 * i$的矩形,有$j$个联通块,某尾状态为$S$ 然后转移就行了... #include <vector> #include <cstd ...
- CF1051D Bicolorings 递推
考试T2,随便推一推就好了~ code: #include <bits/stdc++.h> #define N 1015 #define mod 998244353 #define ll ...
- 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 ...
- cf1051d 简单的状态压缩dp
/* 给定一个二行n列的格子,在里面填黑白色,要求通过黑白色将格子分为k块 请问有多少种填色方式 dp[j][k][0,1,2,3] 填到第j列,有k块,第j列的颜色, */ #include< ...
- D. Bicolorings
传送门 [http://codeforces.com/contest/1051/problem/D] 题意 相当于有个2列n行得棋盘,棋盘上的格子只能是黑或者白,问你联通块为k得方案数有多少,结果对 ...
- 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时的方案总数. 这个显然 ...
随机推荐
- 留言板(Nodejs)
一.知识点 ①nodejs实际开发中,通常把所有的HTML文件放到views目录中 ②nodejs实际开发中,通常把所有的静态资源文件放到public目录中,方便统一处理 当浏览器收到HTML响应内容 ...
- THUWC2020 划船记
PS:THUWC2020在2019年 Day 1 考场外的太懒了不写了. 三题题目大意: T1: T2: 给定一个\(n(\leq 10^5)\)个结点的有向图,每条边有个limit,表示经过这条边l ...
- 白天不懂夜的黑追寻Android规范
有趣有内涵的文章第一时间送达! 喝酒I创作I分享 关注我,每天都有优质技术文章推送,工作,学习累了的时候放松一下自己. 本篇文章同步微信公众号 欢迎大家关注我的微信公众号:「醉翁猫咪」 生活中总有些东 ...
- Maven 打包报错,log4j版本导致
# 在执行打包的时候 mvn clean assembly:assembly # 发生上面的错误 ------------------------------ [INFO] Total time: 2 ...
- DotNet Resource
目录 API 应用框架(Application Frameworks) 应用模板(Application Templates) 人工智能(Artificial Intelligence) 程序集处理( ...
- 将lol人物模型导入到Unity3d
接下来我打算将提取出来的lol人物模型导入到Unity3D中,这样会更加好玩!(不知道如何提取lol人物模型的话请看该链接) 首先我们已经把dae文件导入到c4d中了,可以看到这是一只吹笛子的 ...
- SSM项目实战 之 Shiro
目录 Shiro 概述 shiro核心概念 核心类 整体类图 主要概念 Shiro架构 认证 什么是认证 关键对象 使用ini完成认证 认证流程 自定义realm 散列密码 授权 什么是授权 使用in ...
- js DOM之基础详解
DOM(文档对象模型)是针对HTML和XML文档的一个API,描绘了一个层次化的节点树,允许开发人员添加.删除和修改页面的某一部分. HTML DOM 树形结构如下: 1.Node方面 1.1 节点类 ...
- Linux在线安装Redis
一.进入Redis官网寻找需要下载的版本:https://redis.io/ 将下载地址链接复制下来:http://download.redis.io/releases/redis-5.0.7.tar ...
- Research Guide for Video Frame Interpolation with Deep Learning
Research Guide for Video Frame Interpolation with Deep Learning This blog is from: https://heartbeat ...