Iroha and Haiku II
标签: 状态压缩DP
题目描述
Haiku is a short form of Japanese poetry. A Haiku consists of three phrases with 5, 7 and 5 syllables, in this order.
Iroha is looking for X,Y,Z-Haiku (defined below) in integer sequences.
Consider all integer sequences of length N whose elements are between 1 and 10, inclusive. Out of those 10N sequences, how many contain an X,Y,Z-Haiku?
Here, an integer sequence a0,a1,…,aN−1 is said to contain an X,Y,Z-Haiku if and only if there exist four indices x,y,z,w(0≤x<y<z<w≤N) such that all of the following are satisfied:
ax+ax+1+…+ay−1=X
ay+ay+1+…+az−1=Y
az+az+1+…+aw−1=Z
Since the answer can be extremely large, print the number modulo 109+7.
Constraints
3≤N≤40
1≤X≤5
1≤Y≤7
1≤Z≤5
输入
The input is given from Standard Input in the following format:
N X Y Z
输出
Print the number of the sequences that contain an X,Y,Z-Haiku, modulo 109+7.
样例输入
3 5 7 5
样例输出
1
提示
Here, the only sequence that contains a 5,7,5-Haiku is [5,7,5].
分析
- 用dp[i][j]来表示,长度为i的数组,最后几个数字的状态为j,且这个数组中不存在连续的一些数的和为X,Y,Z的方法数.
- 状态j是这么定义的,把数组中的元素的二进制表示按照顺序串联起来,取后X+Y+Z位
- 如果倒数第Z位,倒数第Y+Z位,倒数第X+Y+Z位都是1,那么就满足了题目中所说的条件.
代码
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
const ll MOD=1e9+7;
int n,a,b,c;
ll dp[42][1<<17];
int main(int argc, char const *argv[])
{scanf("%d%d%d%d", &n,&a,&b,&c);dp[0][0]=1;int base=(1<<(c-1))+(1<<(b+c-1))+(1<<(a+b+c-1));for (int i = 0; i < n; ++i){for (int j = 0; j < (1<<(a+b+c)); ++j){for (int k = 0; k < 10; ++k){int x=(j<<(k+1))+(1<<k);x&=((1<<(a+b+c))-1);if((x&base)!=base){dp[i+1][x]+=dp[i][j];dp[i+1][x]%=MOD;}}}}ll ans=1;for (int i = 0; i < n; ++i){ans=ans*10%MOD;}for (int i = 0; i < (1<<(a+b+c)); ++i){ans=(ans-dp[n][i])%MOD;}ans=(ans+MOD)%MOD;printf("%lld\n", ans);return 0;
}
转载于:https://www.cnblogs.com/sciorz/p/9058610.html
Iroha and Haiku II相关推荐
- Iroha and Haiku I
问题 : Iroha and Haiku I 时间限制: 1 Sec 内存限制: 128 MB 题目描述 Iroha loves Haiku. Haiku is a short form of Jap ...
- AtCoder Regular Contest 058
这个应该是第一场有英文的atcoder吧??不过题解却没有英文的... 从前往后慢慢做... C こだわり者いろはちゃん / Iroha's Obsession 数据范围这么小,直接暴力 #inclu ...
- AtCoder Beginner Contest 265笔记
目录 A - Apple 题目描述 题目分析 题目代码 B - Explore 题目描述 题目分析 题目代码 C - Belt Conveyor 题目描述 题目分析 题目代码 D - Iroha an ...
- 剑指offer:面试题32 - II. 从上到下打印二叉树 II
题目:从上到下打印二叉树 II 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行. 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ ...
- 剑指offer:面试题14- II. 剪绳子 II
题目:剪绳子 II 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m.n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m] .请问 k[0]* ...
- 递归/回溯:Combination Sum II数组之和
问题如下: 已知一组数(其中有重复元素),求这组数可以组成的所有子集中,子 集中的各个元素和为整数target的子集,结果中无重复的子集. 例如: nums[] = [10, 1, 2, 7, 6, ...
- 递归/回溯:Subsets II求子集(有重复元素)
上一篇描述了针对数组中没有重复元素进行子集的求取过程递归/回溯:subsets求子集 但是当出现如下数组时: 例如: nums[] = [2, 1, 2, 2] 结果为: [[], [1], [1,2 ...
- HDU 2080 夹角有多大II
夹角有多大II Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Su ...
- 了解ES6 The Dope Way Part II:Arrow功能和'this'关键字
by Mariya Diminsky 通过玛丽亚·迪明斯基(Mariya Diminsky) 了解ES6 The Dope Way Part II:Arrow功能和'this'关键字 (Learn E ...
- Leetcode 213.大家劫舍II
打家劫舍II 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金.这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的.同时,相邻的房屋装有相互连通的防盗系统,如果两 ...
最新文章
- 这些知名制药跨国企业都实施了SAP系统
- JavaScript基础知识(函数)
- c++ocx交互检测弹框_吉利几何C:2022杭州亚运会移动“明信片”!
- 去年领了163亿薪资的马斯克,刚推出智能召唤功能就被吐槽:遇到人开的车就蒙圈...
- JBOSS优化--比较有用的生产环境配置
- 关于win10更新后谷歌浏览器打开卡慢或者无法上网的问题解决
- Chrome 自动填充的表单是淡黄色的背景怎么办!
- js isinteger_在JavaScript中使用示例使用Number isInteger()方法
- ubuntu 下mysql的常用命令
- 人工蜂群算法python_教程 | 用人工蜂群算法求解k-分区聚类问题
- FLUSH TABLES WITH READ LOCK 和 LOCK TABLES比较
- 少女风vue组件库制作全攻略~~
- 19条优秀的编码原则
- 图像批处理高斯滤波降噪+峰值信噪比计算
- 芝麻信用接口 java_java 对接芝麻信用 -用芝麻私钥解密错误
- Godaddy上的域名如何取消自动续费?
- MATLAB:读取nc文件并将nc文件转为tif文件输出
- 报错:WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after con
- 「斜」italics() //使用斜体显示字符串 20140817 ①文本处理
- EXCEL二级数据有效性的设置问题
热门文章
- 垃圾收集器和内存分配
- [渝粤教育] 泉州师范学院 弦管传奇 古乐南音 参考 资料
- ubuntu16.04下ROS操作系统学习笔记(五)gazebo物理仿真环境搭建、加载服务端模型数据减少报错
- 基于协同过滤,NMF和Baseline的推荐算法
- centos 7 x86_64上安装staruml2.8.0
- 微信小程序生成海报分享:canvas绘制文字溢出如何换行
- CODE[VS]1160 蛇形矩阵
- [转]C# 中的常用正则表达式总结
- msp430入门编程07
- Flash 二进制传图片到后台Java服务器接收