Description

红蓝球各无限多个.
初始时随意地从中选择 n 个, 扔入箱子
初始有一个空的序列
接下来依次做 m 组操作, 每组操作为依次执行下述三个步骤

(1) 从箱子中取出一个求插入序列尾

(2) 往箱子里补充 一红一蓝

(3) 从箱子中取出一个求插入序列尾
求 mm 次操作后, 有多少种不同的颜色序列, 答案对 109+7 取模

Input

第一行两个数 n,mn,m .

Output

一个数 ans 表示答案对 10^9+7 取模的值.

Sample Input

# 样例输入12 3# 样例输入21000 10# 样例输入31000 3000

Sample Output

# 样例输出156# 样例输出21048576# 样例输出3693347555

HINT

样例解释1
一共有 6 个球会被从盒子中取出.
一个方案是不合法的当且仅当第 2,3,4,5 个球的颜色完全相同.

所以答案为 2^6−2^3=56

数据范围

n,m≤3000

Sol

定义\(f[i][j]\)为进行i轮,红球j个的方案数,然后跑普及组dp,但是这样会重复,原因:一个最终序列可能是由多个初始集合生成的。但是我们发现,如果开始有i个红球能够生成一个序列,i+j个也可以,那么我们找到这个最小的i,可以发现一定会用完,所以再加一维\([0/1]\)表示有没有用完过红球,然后就不会有重复了。

Code

#include <cstdio>
int n,m,f[3005][3005][2],ans;const int P=1e9+7;
int main()
{scanf("%d%d",&n,&m);f[0][0][1]=1;for(int i=1;i<=n;i++) f[0][i][0]=1;for(int i=0;i<m;i++) for(int j=0;j<=n;j++) for(int k=0;k<=1;k++){if(j) f[i+1][j-1][k|!(j-1)]=(f[i+1][j-1][k|(j==1)]+f[i][j][k])%P;if(n-j) f[i+1][j+1][k]=(f[i+1][j+1][k]+f[i][j][k])%P;if(j) f[i+1][j][k|(j==1)]=(f[i+1][j][k|(j==1)]+f[i][j][k])%P;if(n-j) f[i+1][j][k]=(f[i+1][j][k]+f[i][j][k])%P;}for(int i=0;i<=n;i++) ans=(ans+f[m][i][1])%P;printf("%d\n",ans);
}

转载于:https://www.cnblogs.com/CK6100LGEV2/p/9469383.html

【AGC013D】Pilling Up dp相关推荐

  1. 【AcWing】数位统计DP、树形DP、状态压缩DP、记忆化搜索

    [AcWing]数位统计DP.树形DP.状态压缩DP.记忆化搜索 一.数位统计DP 二.状态压缩DP 三.树形DP 四.记忆化搜索 一.数位统计DP 计数问题 给定两个整数 a 和 b,求 a 和 b ...

  2. 【动态规划】状压dp:蓝桥2020补给(旅行商问题)

    问题可以转换为: 从0出发途径每个城市至少一次返回0求最短路径: 解法:动态规划(状压dp)+Floyd预处理最短路径(从一个城市到另一个城市走最短路即可,不需考虑途径什么城市) [动态规划笔记]状压 ...

  3. NOJ 1116 哈罗哈的大披萨 【淡蓝】 状态压缩DP

    哈罗哈的大披萨 [淡蓝] 时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte 总提交 : 99            测试通过 : 14 比赛描 ...

  4. NOJ 1116 哈罗哈的大披萨 【淡蓝】 [状压dp+各种优化]

    我只能说,珍爱生命,远离卡常数的题...感谢陈老师和蔡神,没有他们,,,我调一个星期都弄不出来,,,, 哈罗哈的大披萨 [淡蓝] 时间限制(普通/Java) : 1000 MS/ 3000 MS   ...

  5. 【XSY2564】sequence(dp)

    题面 [题目描述] 给定一个长度为nnn的由['0'...'9'][\text{'}0\text{'}...\text{'}9\text{'}]['0'...'9']组成的字符串sss,v[i,j]v ...

  6. 【BZOJ4244】邮戳拉力赛 DP

    [BZOJ4244]邮戳拉力赛 Description IOI铁路是由N+2个站点构成的直线线路.这条线路的车站从某一端的车站开始顺次标号为0...N+1. 这条路线上行驶的电车分为上行电车和下行电车 ...

  7. 【转】Android中dp,px,sp概念梳理以及如何做到屏幕适配

    2019独角兽企业重金招聘Python工程师标准>>> 首先来看一下他们的基本概念: px   :是屏幕的像素点 dp   :一个基于density的抽象单位,如果一个160dpi的 ...

  8. 【bzoj4318】OSU! 期望dp

    题目描述 osu 是一款群众喜闻乐见的休闲软件.  我们可以把osu的规则简化与改编成以下的样子:  一共有n次操作,每次操作只有成功与失败之分,成功对应1,失败对应0,n次操作对应为1个长度为n的0 ...

  9. 【hdu3555】Bomb 数位dp

    题目描述 求 1~N 内包含数位串 "49" 的数的个数. 输入 The first line of input consists of an integer T (1 <= ...

最新文章

  1. 毕飞宇:我是靠阅读支撑起来的作家 因为生活没有给我那么多
  2. c++ 新技能get 统计单词数
  3. linux 线程pthread_detach,linux线程之pthread_join和pthread_detach
  4. mysql循环load data_TP5框架下MySQL通过LOAD DATA INFILE批量导入数据详细操作
  5. 被忽略的TraceId,可以用起来了
  6. docker mysql关掉后启动_Docker启动mysql的坑2
  7. 因为我们还很穷,所以世界杯氛围差
  8. 联想a500手机驱动_一块砖也敢刷:联想手机A368T刷了三次才重新进入系统
  9. 【OpenCV学习笔记】【编程实例】二(图像的旋转和翻转)
  10. 基于Material Studio软件使用第一性原理预测AlAs的晶格参数
  11. 如何将Web of Science中的题录及文章导入NoteExpress?
  12. u盘如何在计算机应用内存,u盘扩大内存,小编教你如何用U盘扩展内存
  13. 结构化思维在产品工作中的应用
  14. java 实现秒抢_Java实现抢红包算法,附完整代码(公平版和手速版)
  15. 4.2.1朴素模式匹配算法
  16. 802.11ax简要笔记
  17. sql server oracle转换,sql-server – 如何从SQL Server DBA转换到Oracle?
  18. 《C语言陷阱和缺陷》笔记
  19. Jackson常用配置示例
  20. 三层交换的定义和实现过程

热门文章

  1. ScrollView HorizontalScrollView
  2. 求出100~200之间的素数
  3. 动态库与静态库优缺点比较(转 侵删)
  4. 浏览器老是自动跳出广告垃圾网页
  5. [_CN] Eclipse精要与高级开发技术 note
  6. GNU make manual 翻译( 一百五十九)
  7. 把linux插足到域
  8. net start mysql 发生系统错误 5。 拒绝访问。
  9. GE 携手哈电国际开启国际合作新篇章
  10. 性能测试工具MultiMechanize的使用介绍