题目来源:http://codeforces.com/group/aUVPeyEnI2/contest/229669

时间限制:1s

空间限制:64MB

题目大意:给定n,a,b的值

求一个长度为n的由1和2组成的数列,要求数列中最多有a个连续的1和b个连续的2,问由多少种不同的数列

样例:



题目解法:

动态规划,使用一个二维数组,dp[i][1]代表当前位为1的前i个数的排列个数,dp[i][2]代表当前位为2的前i个数的排列个数

代码:

#include <bits/stdc++.h>
#define maxn 51000
#define ll long long
using namespace std;
ll dp[maxn][3]={0};
const int modd=1e9+7;
int main() {
int n,a,b;
cin>>n>>a>>b;
dp[0][1]=1;
dp[0][2]=1;
for(int i=1;i<=n;i++)
{
for(int j=1;i-j>=0&&j<=a;j++)
dp[i][1]=(dp[i][1]+dp[i-j][2])%modd;
for(int j=1;i-j>=0&&j<=b;j++)
dp[i][2]=(dp[i][2]+dp[i-j][1])%modd;
//cout<<dp[i][1]<<" "<<dp[i][2]<<endl;
}
ll ans=(dp[n][1]+dp[n][2])%modd;
cout<<ans<<endl;
return 0;
}

最新文章

  1. 实践 Neutron FWaaS - 每天5分钟玩转 OpenStack(118)
  2. kylin(一): 原理架构
  3. 微信公众号&quot;赞赏&quot;功能来了 觉得不错就给作者打个赏吧
  4. JUC回顾之-可重入的互斥锁ReentrantLock
  5. 理解Node.js事件驱动编程
  6. pip 安装python环境及打包
  7. 分析Sizzle引擎 - 词法解析
  8. 通讯服务类API调用的代码示例合集:短信服务、手机号归属地查询、电信基站查询等
  9. 定位bug的姿势对吗?
  10. 利用FT232实现USB转串口
  11. Nagios 监控 Httpd 并发数插件
  12. 启动eclipse弹出提示Version 1.7.0_79 of the JVM is not suitable for this product. Version: 1.8 or greater is required怎样解决
  13. Linux下使用vim命令编辑与修改文本内容
  14. Node内核基本自带模块fs 文件的读写
  15. 通过maven中properties标签定义spring版本号
  16. navicat 在写存储过程的时候总是说语法错误
  17. SQL脚本修改表结构
  18. 汇编调用C程序
  19. Swing的GUI组件得到焦点
  20. 筛选git最后一次文件列表

热门文章

  1. 使用for in 循环数据集
  2. Hadoop(二)CentOS7.5搭建Hadoop2.7.6完全分布式集群
  3. C++ —— 非类中使用const定义常量的初始化,以及#define和typedef的区别
  4. Centos7最小化安装之工作站设置
  5. 20155210潘滢昊 2016-2017-2 《Java程序设计》第2周学习总结
  6. 20155222 2016-2017-2《Java程序设计》课程总结
  7. 基于Opencv的人脸检测及识别
  8. win10 64位redis的安装和测试
  9. CF 1093 E. Intersection of Permutations
  10. git clone的时候报error: RPC failed; result=18错误