【AGC013D】Pilling Up dp
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相关推荐
- 【AcWing】数位统计DP、树形DP、状态压缩DP、记忆化搜索
[AcWing]数位统计DP.树形DP.状态压缩DP.记忆化搜索 一.数位统计DP 二.状态压缩DP 三.树形DP 四.记忆化搜索 一.数位统计DP 计数问题 给定两个整数 a 和 b,求 a 和 b ...
- 【动态规划】状压dp:蓝桥2020补给(旅行商问题)
问题可以转换为: 从0出发途径每个城市至少一次返回0求最短路径: 解法:动态规划(状压dp)+Floyd预处理最短路径(从一个城市到另一个城市走最短路即可,不需考虑途径什么城市) [动态规划笔记]状压 ...
- NOJ 1116 哈罗哈的大披萨 【淡蓝】 状态压缩DP
哈罗哈的大披萨 [淡蓝] 时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte 总提交 : 99 测试通过 : 14 比赛描 ...
- NOJ 1116 哈罗哈的大披萨 【淡蓝】 [状压dp+各种优化]
我只能说,珍爱生命,远离卡常数的题...感谢陈老师和蔡神,没有他们,,,我调一个星期都弄不出来,,,, 哈罗哈的大披萨 [淡蓝] 时间限制(普通/Java) : 1000 MS/ 3000 MS ...
- 【XSY2564】sequence(dp)
题面 [题目描述] 给定一个长度为nnn的由['0'...'9'][\text{'}0\text{'}...\text{'}9\text{'}]['0'...'9']组成的字符串sss,v[i,j]v ...
- 【BZOJ4244】邮戳拉力赛 DP
[BZOJ4244]邮戳拉力赛 Description IOI铁路是由N+2个站点构成的直线线路.这条线路的车站从某一端的车站开始顺次标号为0...N+1. 这条路线上行驶的电车分为上行电车和下行电车 ...
- 【转】Android中dp,px,sp概念梳理以及如何做到屏幕适配
2019独角兽企业重金招聘Python工程师标准>>> 首先来看一下他们的基本概念: px :是屏幕的像素点 dp :一个基于density的抽象单位,如果一个160dpi的 ...
- 【bzoj4318】OSU! 期望dp
题目描述 osu 是一款群众喜闻乐见的休闲软件. 我们可以把osu的规则简化与改编成以下的样子: 一共有n次操作,每次操作只有成功与失败之分,成功对应1,失败对应0,n次操作对应为1个长度为n的0 ...
- 【hdu3555】Bomb 数位dp
题目描述 求 1~N 内包含数位串 "49" 的数的个数. 输入 The first line of input consists of an integer T (1 <= ...
最新文章
- 毕飞宇:我是靠阅读支撑起来的作家 因为生活没有给我那么多
- c++ 新技能get 统计单词数
- linux 线程pthread_detach,linux线程之pthread_join和pthread_detach
- mysql循环load data_TP5框架下MySQL通过LOAD DATA INFILE批量导入数据详细操作
- 被忽略的TraceId,可以用起来了
- docker mysql关掉后启动_Docker启动mysql的坑2
- 因为我们还很穷,所以世界杯氛围差
- 联想a500手机驱动_一块砖也敢刷:联想手机A368T刷了三次才重新进入系统
- 【OpenCV学习笔记】【编程实例】二(图像的旋转和翻转)
- 基于Material Studio软件使用第一性原理预测AlAs的晶格参数
- 如何将Web of Science中的题录及文章导入NoteExpress?
- u盘如何在计算机应用内存,u盘扩大内存,小编教你如何用U盘扩展内存
- 结构化思维在产品工作中的应用
- java 实现秒抢_Java实现抢红包算法,附完整代码(公平版和手速版)
- 4.2.1朴素模式匹配算法
- 802.11ax简要笔记
- sql server oracle转换,sql-server – 如何从SQL Server DBA转换到Oracle?
- 《C语言陷阱和缺陷》笔记
- Jackson常用配置示例
- 三层交换的定义和实现过程