CSP 201312-4 有趣的数
题目链接
典型的数位DP~
打表易发现所有符合条件的数都是以 2 2 2 开头的,那么一共有以下几种状态:
- 只包含数字 2
- 只包含数字 2,0
- 只包含数字 2,3
- 只包含数字 2,0,3
- 只包含数字 2,0,1
- 包含四个数字
回答几个困惑,如果开头为 2,其他数字任选,那为什么不是 2 3 = 8 2^3=8 23=8 个状态呢?举例,为什么没有只包含 2,1的状态,因为 1 的位置必须出现在 0 后面,如果单纯只有 2,1 显然无法知道答案,所以出现 1 就必须出现 0,所以只有 6 个状态。我们用 d p [ i ] [ j ] dp[i][j] dp[i][j] 表示长为 i i i 位的数在 j j j 状态下有多少个,状态转移方程推导如下:
- d p [ i ] [ 0 ] ≡ 1 dp[i][0]\equiv 1 dp[i][0]≡1
- 包含 2,0 两个数字可以通过以下两种方法得到:
①前 i − 1 i-1 i−1 位都是 2 加上一个 0
②前 i − 1 i-1 i−1 位已经包含 0 和 2了,第 i i i 位加 0 或者加 2 都行
即: d p [ i ] [ 1 ] = d p [ i − 1 ] [ 0 ] + d p [ i − 1 ] [ 1 ] ∗ 2 dp[i][1]=dp[i-1][0]+dp[i-1][1]*2 dp[i][1]=dp[i−1][0]+dp[i−1][1]∗2 - 包含 2,3 两个数字可以通过以下两种方法得到:
①前 i − 1 i-1 i−1 位都是 2 加上一个 3
②前 i − 1 i-1 i−1 位已经包含 2 或 3了,第 i i i 位加 3(注意 2 必须在 3 前面,所以此时不能加 2)
即: d p [ i ] [ 2 ] = d p [ i − 1 ] [ 0 ] + d p [ i − 1 ] [ 2 ] dp[i][2]=dp[i-1][0]+dp[i-1][2] dp[i][2]=dp[i−1][0]+dp[i−1][2] - 包含 2,0,3 三个数字可以通过以下三种方法得到:
①前 i − 1 i-1 i−1 位包含 2,0 了,第 i i i 位加 3 得到
②前 i − 1 i-1 i−1 位包含 2,3 了,第 i i i 位加 0 得到
③前 i − 1 i-1 i−1 位包含 2,0,3了,第 i i i 位加 0 或者 3 得到 - 包含 2,0,1 三个数字可以通过以下两种方法得到:
①前 i − 1 i-1 i−1 位包含 2,0 了,第 i i i 位加 1 得到
②前 i − 1 i-1 i−1 位包含 2,0,1 了,第 i i i 位加 1 或者 2 得到 - 包含四个数字可以通过以下两种方法得到:
①前 i − 1 i-1 i−1 位包含 2,0,3 了,第 i i i 位加 1
②前 i − 1 i-1 i−1 位包含 2,0,1 了,第 i i i 位加 3
③前 i − 1 i-1 i−1 位包含 2,0,1,3了,第 i i i 位加 1 或者加 3
最后 d p [ n ] [ 5 ] dp[n][5] dp[n][5] 就是答案,AC代码如下:
#include <bits/stdc++.h>using namespace std;
typedef long long ll;
const ll mod = 1e9 + 7;
ll n, dp[1005][10];int main() {cin >> n;for (int i = 1; i <= n; i++) {dp[i][0] = 1;dp[i][1] = (dp[i - 1][0] + dp[i - 1][1] * 2) % mod;dp[i][2] = (dp[i - 1][0] + dp[i - 1][2]) % mod;dp[i][3] = (dp[i - 1][1] + dp[i - 1][2] + dp[i - 1][3] * 2) % mod;dp[i][4] = (dp[i - 1][1] + dp[i - 1][4] * 2) % mod;dp[i][5] = (dp[i - 1][3] + dp[i - 1][4] + dp[i - 1][5] * 2) % mod;}cout << dp[n][5] << endl;return 0;
}
CSP 201312-4 有趣的数相关推荐
- CSP认证 201312-4有趣的数[C++题解]:组合数、数学
文章目录 题目解答 题目链接 题目解答 来源:acwing 分析: 题目要求:n位数,只能放0,1,2,3:0必须在1前面,2必须在3前面:0不能放在首位. 由于0和1有限制关系,2和3有限制关系,所 ...
- #CSP 201312-4 有趣的数
问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次. 2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3之前. 3. 最高 ...
- AcWing 3195. 有趣的数
我们把一个数称为有趣的,当且仅当: 它的数字只包含 0,1,2,3,且这四个数字都出现过至少一次. 所有的 0 都出现在所有的 1 之前,而所有的 2 都出现在所有的 3 之前. 最高位数字不为 0. ...
- 【CCFCSP- 201312-4】有趣的数(线性dp)
题干: 试题编号: 201312-4 试题名称: 有趣的数 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, ...
- CCF 201312-4 有趣的数
试题编号: 201312-4 试题名称: 有趣的数 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, 2, 3 ...
- 动态规划——有趣的数(ccf)
题目描述: 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次. 2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3之前. 3. 最 ...
- CCF CSP201312-4有趣的数
CCF CSP201312-4有趣的数 题目描述 问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次. 2. 所有的0都出现在所有的1 ...
- CCF201312-4 有趣的数(100分)
试题编号: 201312-4 试题名称: 有趣的数 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, 2, 3 ...
- 【CSP201312-4】有趣的数(数位DP)
problem 问题描述 试题编号: 201312-4 试题名称: 有趣的数 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字 ...
- CCF 模拟题 有趣的数 (数位DP)
问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次. 2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3之前. 3. 最高 ...
最新文章
- [19/03/16-星期六] 常用类_Date时间类DateFormat类
- 计算机设备投标标书范本,OA办公自动化系统投标文件(标书范本)
- 安卓bmi项目_搭载安卓系统的智能健康一体机:上禾SH-V20
- MySQL Group Replication数据安全性保障
- 关于Java html table表格转excel
- ubuntu etc文件夹在哪_嵌入式Linux开发学习之 Ubuntu 和 Windows 文件互传
- 手机号码归属地全库生成
- matlab美国标准大气,国际标准大气(ISA)
- java 生成条形码_JAVA 生成扫描条形码
- Blender自动化建模入门
- 三维激光扫描后处理软件_地面三维激光扫描仪应用之一|云尚智造
- EasyExcel 固定(冻结)单元格
- Oracle 对比两张表的数据是否一致
- 如何解决Css属性text-overflow:ellipsis 不起作用(文本溢出显示省略号)
- 微信支付横空出世,闲扯一番自我扫盲(转)
- MySQL为什么会抖一下
- spi转串口 linux驱动,RT_Thread WK2124 SPI转串口芯片驱动软件包
- win10本地组策略功能说明
- 北交大计算机学院教授,北京交通大学计算机与信息技术学院导师教师师资介绍简介-张树君...
- 华为MateBook暗影精灵游戏本恢复出厂设置
热门文章
- 培训咨询翻译网站方案
- html绝对定位怎么页面居中,css绝对定位如何居中?css绝对定位居中的四种实现方法...
- 上海计算机信息进修学院高中部好不好,【图】- 初三成绩不好,想读高中来上海长宁科技学院高中部 - 上海浦东新区学历教育 - 上海百姓网...
- Spark部分算子及使用
- 通达信lv2接口程序怎么创建BOLL通道数据?
- 为了心中的春天而坚持
- 慧安-PLC4X支持的协议
- 计算机语言的正交性,【zt】程序设计语言正交特性的一点思考
- 高等数学的函数连续,可导,可微和偏导数连续的关系(多元)
- 如何设置excel表格表头冻结_excel表格怎样让表头固定不动,看完就明白了