dp-水题
来源:互联网 发布:如何提升淘宝店铺销量 编辑:程序博客网 时间:2024/06/01 08:24
标题就是用来骗人的;
题意
有4种颜色:1234
我们要把n个点染色,然后依次入栈;
如果栈顶的L个点都是同色,那么L个点全部弹出;
问最后全部弹出的方案;
共T组数据;
100%的数据 n≤1000,2≤L≤10,T≤50;
【输入格式】
第一行一个整数T,表示数据组数。对于每组数据:
一行两个整数n,L,意义如上所述。
【输出格式】
T行,每行一个整数表示方案数mod 1000000007(10^9+7)的结果。
【样例输入】
4
2 2
4 2
8 5
84 4
【样例输出】
4
28
0
621871151
【样例解释】
第一组,显然只有可能是两只蛙都属于同一帮派。
第二组,共有3种形式(X,Y表示不同的帮派)
1.XXXX型 4种
2.XXYY型 前两只和后两只分别同派,12种
3.XYYX型 中间两只和头尾两只分别同派,12种
其中XYYX的模拟为:
空->X->XY->XYY==X->XX==空
第三组,5不能整除8,显然无解
我们怎么做呢?
观察状态,可以搞出一个dp状态
f[i][j]表示这时有i个数,还要添加j个才可以全出站;
比如L=3;
1122=f[4][2]//需要一个1和一个2才可以
1=f[1][2]//需要2个1
1223332=f[7][2]//需要2个1
111=f[3][0]
nan=f[0][0]
我们考虑地推转移;
如果在后面加一个和当前状态一样的数,那么j会减1;
如果再加一个和当前不一样的数,那么j会加L-1;
if(j+L-1<=1000) if(j)f[i+1][j+L-1]=(f[i+1][j+L-1]+f[i][j]*3)%mo; else f[i+1][j+L-1]=(f[i+1][j+L-1]+f[i][j]*4)%mo; if(j)f[i+1][j-1]=(f[i+1][j-1]+f[i][j])%mo;
当然离线算更稳健
阅读全文
1 0
- Dp水题
- DP 水题
- dp-水题
- dp水题
- poj1163 dp水题
- hdu 1231 DP水题
- PKU 2704 水题DP
- 养猪(dp水题)
- UVA 11584 DP水题
- UVA 1424 DP水题
- UVA 11552 DP水题
- UVA 1456 DP水题
- dlut1217-dp水题
- 经典DP水题A
- 经典DP水题B
- 经典DP水题G
- 一些 DP 水题
- 经典DP水题C
- 全面解析Linux 内核 3.10.x
- BZOJ 1483: [HNOI2009]梦幻布丁
- KSGT
- ntp时间服务器源码安装
- 二叉树遍历-后序遍历(非递归)
- dp-水题
- 快速排序介绍与分析
- C# 分页 aspnetpager
- 地理信息系统矢量数据的组织形式 第二章:数字表面模型
- canvas学习总结四:绘制虚线
- 增加MAVLink协议 自定义消息.md
- Android Studio使用小技巧:提取方法代码片段
- 3932: [CQOI2015]任务查询系统 Time Limit: 20 Sec Memory Limit: 512 MB Submit: 3412 Solved: 1098 [Submit]
- iOS 使用全能的初始化方法