ABBA

题目传送门

解题思路

用dp[i][j]来表示前i+j个字符中,有i个A和j个B的合法情况个数。我们可以让前n个A作为AB的A,因为如果我们用后面的A作为AB的A,我们一定也可以让前面的A对应那个B,同理,我们可以让前m个B作为BA的B。

接下来讨论转移方程。当i<=n时,这个A作为AB的A必然可以放进来,当i>n时,此时若放入A,则这个A是第i-n个BA的A,所以只有当i<=n+min(j,m)时才可以放入。同理,只有当j<=m或者j<=m+min(i,n)时才可放入这个B。

注意不能直接memset,会超时,要手写循环归0。

代码如下

#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll; inline int read(){
int res = 0, w = 0; char ch = 0;
while(!isdigit(ch)){
w |= ch == '-', ch = getchar();
}
while(isdigit(ch)){
res = (res << 3) + (res << 1) + (ch ^ 48);
ch = getchar();
}
return w ? -res : res;
} const int N = 2005;
const int mod = 1e9 + 7; int dp[N][N]; int main()
{
int n, m;
while(scanf("%d%d", &n, &m) != EOF){
for(int i = 0; i <= n + m; i ++){
for(int j = 0; j <= n + m; j ++)
dp[i][j] = 0;
}
for(int i = 0; i <= n; i ++) //前n个可以直接放A
dp[i][0] = 1;
for(int i = 0; i <= m; i ++)
dp[0][i] = 1;
for(int i = 1; i <= n + m; i ++){
for(int j = 1; j <= n + m; j ++){
if(i <= n + min(j, m)) //j,m都大于等于0
dp[i][j] = (dp[i][j] + dp[i - 1][j]) % mod;
if(j <= m + min(i, n))
dp[i][j] = (dp[i][j] + dp[i][j - 1]) % mod;
}
}
printf("%d\n", dp[n + m][n + m] % mod);
}
return 0;
}

最新文章

  1. C语言操作注册表 写入 读取信息
  2. linux下服务端实现公网数据转发
  3. Java基础之面向对象以及其他概念
  4. C复数的四则运算
  5. leetcode:Factorial Trailing Zeroes
  6. 快速设计一个简单的WPF串口上位机
  7. The Minimum Length - HUST 1010(求最小循环节)
  8. ie浏览器中 overflow:hidden无作用的解决方案
  9. 学习php常用算法
  10. 关于OF和CF
  11. 转 spring security的使用
  12. leetcode--007 word break I
  13. 一个最简单的cell按钮点击回调
  14. linux编译安装时常见错误解决办法
  15. .net core 2.0 报错:error NU1102: Unable to find package 。。。
  16. Ajax_简介: 异步的 JS 和 XML_原生写 ajax 分析其原理_jquery_ajax_art-template
  17. C# 获取 sha256
  18. Educational Codeforces Round 60 Div. 2
  19. Django+Xadmin打造在线教育系统(九)
  20. js 使用a标签 下载资源

热门文章

  1. MSYS2开发环境搭建(无幻的博客,编译OpenSSL,可使用pacman升级)
  2. 如何解析DELPHI XE5服务器返回的JSON数据(翻译)及中文乱码
  3. delphi的Socket(有两种分别继承TObject和TComponent的方式)
  4. 使用fastjson读取超巨json文件引起的GC问题
  5. Web前端——JavaScript练习
  6. java基础第十三篇之Collection
  7. ElasticStack学习(二):ElasticStack安装与运行
  8. Hadoop起步之图解SSH、免密登录原理和实现
  9. 33 | 无实例无真相:基于LoadRunner实现企业级服务器端性能测试的实践(下)
  10. 【朝花夕拾】Android自定义View篇之(九)多点触控(下)实践出真知