Description

构造序列y1,...,ny_{1,...,n}满足:

1.有tt个j(2≤j≤n−1)j(2\leq j\leq n-1)满足yj−1<yj>yj+1y_{j-1}y_{j+1}

2.有t−1t-1个j(2≤j≤n−1)j(2\leq j\leq n-1)满足yj−1>yj<yj+1y_{j-1}>y_{j}

3.yjy_{j}是介于1~4之间的整数

4.yj≠yj+1,1≤j≤n−1y_{j}\neq y_{j+1},1\leq j\leq n-1

问方案数

Input

两个整数nn和tt (3≤n≤20,1≤t≤10)(3\leq n\leq 20,1\leq t\leq 10)

Output

输出方案数

Sample Input

6 1

Sample Output

6

Solution

dp[i][j][k][a][b]dp[i][j][k][a][b]填前ii个值,jj个波峰,kk个波谷,yi−1=a,yi=by_{i-1}=a,y_{i}=b的方案数,每次枚举当前位置的值,与前两个值比较看是否会多出一个波峰或波谷进行转移即可,时间复杂度O(64nt2)O(64nt^2)

Code

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<set>
#include<ctime>
using namespace std;
typedef long long ll;
int n,t;
ll dp[22][22][22][5][5];//dp[i][j][k][a][b]填前i个y,j个波峰,k个波谷,第i-1个y是a,第i个y是b
int main()
{scanf("%d%d",&n,&t);memset(dp,0,sizeof(dp));for(int i=1;i<=4;i++)   for(int j=1;j<=4;j++)if(j!=i)dp[2][0][0][i][j]=1;for(int i=2;i<n;i++)for(int j=0;j<=t;j++)for(int k=0;k<=t-1;k++) for(int a=1;a<=4;a++)for(int b=1;b<=4;b++)if(a!=b)for(int c=1;c<=4;c++)if(b!=c){if(a>b&&b<c)dp[i+1][j][k+1][b][c]+=dp[i][j][k][a][b];else if(a<b&&b>c)dp[i+1][j+1][k][b][c]+=dp[i][j][k][a][b];else dp[i+1][j][k][b][c]+=dp[i][j][k][a][b];}ll ans=0;for(int i=1;i<=4;i++)for(int j=1;j<=4;j++)ans+=dp[n][t][t-1][i][j];printf("%I64d\n",ans);return 0;
}

CodeForces 14 E.Camels(dp)相关推荐

  1. codeforces 711C Coloring Trees(DP)

    题目链接:http://codeforces.com/problemset/problem/711/C O(n^4)的复杂度,以为会超时的 思路:dp[i][j][k]表示第i棵数用颜色k涂完后bea ...

  2. Codeforces 803E--Roma and Poker (DP)

    原题链接:http://codeforces.com/problemset/problem/803/E 题意:给一个n长度的字符串,其中'?'可以替换成'D'.'W'.'L'中的任意一种,'D'等价于 ...

  3. Codeforces 626F Group Projects (DP)

    题目链接  8VC Venture Cup 2016 - Elimination Round 题意  把$n$个物品分成若干组,每个组的代价为组内价值的极差,求所有组的代价之和不超过$k$的方案数. ...

  4. CodeForces - 835D Palindromic characteristics (dp)

    题目链接:http://codeforces.com/problemset/problem/835/D点击打开链接 D. Palindromic characteristics time limit ...

  5. CodeForces 176B Word Cut(DP)

    题意:给你a串和b串,你能切k次,每次切完将尾部分放在头的前面,问有多少种方案切k次从a串变为b串 思路:令dp[i][0]为砍了i次变成b串的方案数,dp[i][1]为砍了i次变成非b串的方案数,然 ...

  6. Codeforces14 E. Camels(dp)

    题意: 解法: 令d[i][t1][t2][x][y]表示前i个数,情况1出现t1次,情况2出现t2次, 末尾两个数为x和y的方案数. 枚举下一个数nt进行转移即可.最后答案为d[n][t][t-1] ...

  7. LeetCode 256. 粉刷房子(DP)

    文章目录 1. 题目 2. 解题 1. 题目 假如有一排房子,共 n 个,每个房子可以被粉刷成红色.蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其与相邻的两个房子颜色不能相同. 当然,因 ...

  8. 求三角形最大面积(DP)

    求三角形最大面积(DP) 在OJ上奇迹般WA了:WA:70. Why? #include <iostream> #include <string.h> using namesp ...

  9. LeetCode 编辑距离 II(DP)

    1. 题目 给你两个单词 s 和 t,请你计算出将 s 转换成 t 所使用的最少操作数. 你可以对一个单词进行如下两种操作: 删除一个字符 替换一个字符 注意: 不允许插入操作 题目保证有解 示例: ...

最新文章

  1. leetcode 两数之和 整数反转 回文数 罗马数字转整数
  2. 如何在graphpad表示出正负误差_GraphPad Prism 8.0绘制误差连线并填充颜色图
  3. 点击展开 表格_CAD怎么将excel表格的数据导入并且实时更新?
  4. Python中异常(Exception)的总结
  5. mysql5.7配置用户名密码_Druid拦截功能的配置与简单绕过
  6. 利用scipy包计算表格线的峰值,还原表格得到表格结构
  7. 【转】牛人杰作 管饭哥登场
  8. Windows平台下go编译器LiteIDE的安装和使用
  9. 信息学奥赛一本通C++语言——1104:计算书费
  10. 《哪吒之魔童降世》电影密钥延期至9月26日,将冲击中国票房总榜前三
  11. linux安装gtk命令,Ubuntu 下安装 GTK2.0
  12. StringBufferStringBuilder 源码详解
  13. 文件夹病毒残余文件的解决办法
  14. 【华为hcia基本了解(核心、汇聚、接入交换机)(网络设备-交换机、路由器、防火墙)(AP无线接入点、AC无线控制器)】-20211122
  15. 安卓APK文件结构解析 怎样去除内置广告 及修改图标和文字
  16. 如何查看电脑连过的WIFI以及WiFi密码
  17. vue实现点击播放英语单词
  18. 计算机专业职业战队,「团长分享」计算机系Meiko?画家小姜?如果选手没打职业……...
  19. 聚观早报 | 明年起手机预装APP均可卸载;爱奇艺VIP会员再次涨价
  20. Tekla structures深入定制开发篇(一)

热门文章

  1. 如何用画图框住所选内容_关于国家,公民身份,住所和纳税
  2. 【工作笔记】Springboot一个比较通用的数据脱敏处理办法
  3. android游戏手柄,没手柄也不怕 键盘玩Android游戏攻略
  4. 神奇的口袋 C++ 三种方法(枚举,递归,动态规划)
  5. MySql数据查重、去重的实现
  6. Maven使用(一)
  7. switch() 参数支持类型
  8. 爬虫实战——求是网周刊文章爬取
  9. 数字电路中的基础电路结构
  10. 浙江大学pat 1013