CodeForces - 1051D-简单DP
这个题叫问给一个2*N的方块,你可以在每一个上填任意黑或者白两种,假设颜色相同的并且有公共边的就被认为是一块,问组成K块有多少种方案。
这题开始感觉无从下手,像组合数学又不像的,其实这个题的关键在于,2*N 的方块,那么我每两个就只会有四种情况,我们可以通过求最后两位去递推得到更多位数的,因此问题有办法解决了 。
DP[i][j][[k] ,i代表我目前到了第i位置,有j个块,最后一位i是k的情况(我假设 00是0 ,01是1,10是2,11是3)。
PS:DP转移方程太长了,你自己看代码。。。。(其实应该是有更简单的方法的,我的DP写的太丑了)
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
long long dp[][][];
const int mod=;
int main(){
int n,k;
while(~scanf("%d%d",&n,&k)){
memset(dp,,sizeof(dp));
dp[][][]=;
dp[][][]=;
dp[][][]=;
dp[][][]=;
for (int i=;i<=n;i++){
for (int j=;j<=*n;j++){
dp[i+][j][]=(dp[i+][j][]+dp[i][j][]+dp[i][j][]+dp[i][j][])%mod;
dp[i+][j+][]=(dp[i+][j+][]+dp[i][j][])%mod; dp[i+][j][]=(dp[i+][j][]+dp[i][j][])%mod;
dp[i+][j+][]=(dp[i+][j+][]+dp[i][j][]+dp[i][j][])%mod;
dp[i+][j+][]=(dp[i+][j+][]+dp[i][j][])%mod; dp[i+][j][]=(dp[i+][j][]+dp[i][j][])%mod;
dp[i+][j+][]=(dp[i+][j+][]+dp[i][j][]+dp[i][j][])%mod;
dp[i+][j+][]=(dp[i+][j+][]+dp[i][j][])%mod; dp[i+][j][]=(dp[i+][j][]+dp[i][j][]+dp[i][j][]+dp[i][j][])%mod;
dp[i+][j+][]=(dp[i+][j+][]+dp[i][j][])%mod;
}
} // for (int i=1;i<=n;i++){
// for (int j=1;j<=2*n;j++){
// printf("%d %d %d %d----",dp[i][j][0],dp[i][j][1],dp[i][j][2],dp[i][j][3]);
// }
// printf("\n");
// }
printf("%lld\n",(dp[n][k][]+dp[n][k][]+dp[n][k][]+dp[n][k][])%mod); }
return ;
}
CodeForces - 1051D-简单DP的更多相关文章
- CodeForces - 1051D Bicolorings(DP)
题目链接:http://codeforces.com/problemset/problem/1051/D 看了大佬的题解后觉着是简单的dp,咋自己做就做不来呢. 大佬的题解:https://www.c ...
- You Are Given a Decimal String... CodeForces - 1202B [简单dp][补题]
补一下codeforces前天教育场的题.当时只A了一道题. 大致题意: 定义一个x - y - counter :是一个加法计数器.初始值为0,之后可以任意选择+x或者+y而我们由每次累加结果的最后 ...
- CodeForces - 1051D (线性DP)
题目:https://codeforces.com/problemset/problem/1051/D 题意:一个2行n列的矩形,上面有黑白块,然后问你怎么布置才能有k个连通块,问有多少种方案数 思路 ...
- Codeforces Round #260 (Div. 1) A. Boredom (简单dp)
题目链接:http://codeforces.com/problemset/problem/455/A 给你n个数,要是其中取一个大小为x的数,那x+1和x-1都不能取了,问你最后取完最大的和是多少. ...
- codeforces Gym 100500H A. Potion of Immortality 简单DP
Problem H. ICPC QuestTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100500/a ...
- Codeforces Round #302 (Div. 2) C. Writing Code 简单dp
C. Writing Code Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/544/prob ...
- Codeforces 41D Pawn 简单dp
题目链接:点击打开链接 给定n*m 的矩阵 常数k 以下一个n*m的矩阵,每一个位置由 0-9的一个整数表示 问: 从最后一行開始向上走到第一行使得路径上的和 % (k+1) == 0 每一个格子仅仅 ...
- Codeforces Round #267 (Div. 2)D(DFS+单词hash+简单DP)
D. Fedor and Essay time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- Codeforces Round #394 (Div. 2) C. Dasha and Password(简单DP)
C. Dasha and Password time limit per test 2 seconds memory limit per test 256 megabytes input standa ...
- HDU 1087 简单dp,求递增子序列使和最大
Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 ...
随机推荐
- [20190130]删除tab$记录的恢复2.txt
[20190130]删除tab$记录的恢复2.txt --//前面链接写好了脚本,开始测试删除后的恢复.千万不要在生产系统做这样的测试!!--//参考链接:http://blog.itpub.net/ ...
- Spring基于注解注入的两种方式
1.@Autowried 1)默认基于类型查找容器的的Bean进行注入(注入的Bean的实现类是唯一的). 2)当实现类的Bean大于一个的时候,需结合@Qualifier,根据Bean的名称来指定需 ...
- 本博客停止更新改用wordperss
http://www.azurew.com/ 还是能有自己的博客比较爽 哈哈哈
- miui10 傻瓜式安装google框架方法
miui10,打开自带的小米应用商店,搜索youtube,然后往下看选择百度的搜索源,点进去选择第一个下载就可以了. 下载完成之后会就提醒你安装google框架了, 点确定后自动就装好了,就是这么简单 ...
- oracle 分组函数执行分析
先上例了: select job as "JOB1", avg(sal) as "avg sal" from scott.emp group by " ...
- ASP.NET -- WebForm -- Session的使用
ASP.NET -- WebForm -- Session的使用 Session是服务器端状态保持机制. 1. Test4.aspx文件与Test4.aspx.cs文件 <%@ Page La ...
- ubuntu下VS code如何调试C++代码
最近开始使用Vs codel,真的方便,可以和git结合.下面总结一下如何调试程序, 我写了一个实例程序(不重要) #include <iostream> #include <fst ...
- 自定义实现HashMap的put、get方法
public class HashMap{ public static void main(String[] args){ put("aa", "wo ai ni&quo ...
- python3内置函数练习
1. abs() abs() 函数返回数字的绝对值. print(abs(1.5236)) # 1.5236 print(abs(1.0)) # 1.0 2. all() all() 函数用于判断给定 ...
- 《生命》第二集:Reptiles and Amphibians (爬行和两栖动物)
第二集也是一个个动物的片段,不过集中在爬行和两栖类动物上. 印度尼西亚的瀑布蟾蜍进化出神器强有力的脚,能够抓牢很多物体,是逃生的手段,同一环境下,卵石蟾蜍,能够缩紧全身肌肉,眼山坡下滑,是另一种逃生是 ...