题目:

Bobo has a string of length 2(n + m) which consists of characters A and B. The string also has a fascinating property: it can be decomposed into (n + m) subsequences of length 2, and among the (n + m) subsequences n of them are AB while other m of them are BA.

Given n and m, find the number of possible strings modulo (109+7)(10^9+7)(109+7).

输入描述

The input consists of several test cases and is terminated by end-of-file.

Each test case contains two integers n and m.

  • 0≤n,m≤1030 \leq n, m \leq 10^30≤n,m≤103
  • There are at most 2019 test cases, and at most 20 of them has max⁡{n,m}>50\max{n, m} > 50max{n,m}>50.

输出描述

For each test case, print an integer which denotes the result.

样例

输入;
1 2
1000 1000
0 0
输出:
13
436240410
1

大致题意:

有一个人有一种字符串(长度为2*(n+m)),这个字符串中含有n个AB和m个BA,AB和BA不连续也是可以的,只要求相对位置满足要求就行,现在问你和那个人一样的满足这种要求的字符串到底有多少个。

思路

一种贪心的思路,然后dp实现。
dp[i][j]表示用了i个A和j个B的方案数。
贪心和dp
要是A的话,肯定是要先要满足n个AB,然后假如现在已经有了j个B,那么最多只能有j+n个A,
所以当i-n<j的时候
dp[i+1][j]+=dp[i][j];
同理
B的情况也是一样,肯定要先满足m个BA,然后假如现在有i个A,那么最多现在只能有i+m个B;
所以当j-n<m的时候
dp[i][j+1]+=dp[i][j];

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
long long  dp[2005][2005];
int n,m;
int main()
{while(~scanf("%d%d",&n,&m)){int sum=n+m;dp[0][0]=1;for(int i=0;i<=sum;i++){for(int j=0;j<=sum;j++){if(i-n<j){dp[i+1][j]+=dp[i][j];dp[i+1][j]%=1000000007;}if(j-m<i){dp[i][j+1]+=dp[i][j];dp[i][j+1]%=1000000007;}}}printf("%lld\n",dp[sum][sum]);for(int i=0;i<=sum+1;i++){for(int j=0;j<=sum+1;j++){dp[i][j]=0;}}}return 0;
}

牛客多校第一场——E-ABBA相关推荐

  1. 2019 牛客多校第一场 E ABBA

    题目链接:https://ac.nowcoder.com/acm/contest/881/E 题目大意 问有多少个由 (n + m) 个 'A' 和 (n + m) 个 'B',组成的字符串能被分割成 ...

  2. python字符串去重及排序 牛客_2018牛客多校第一场 D.Two Graphs

    题意: n个点,m1条边的图E1,n个点,m2条边的图E2.求图E2有多少子图跟图E1同构. 题解: 用STL的全排列函数next_permutation()枚举映射.对于每一种映射枚举每一条边判断合 ...

  3. 2019牛客多校第一场

    2019牛客多校第一场 题号 题目 知识点 A Monotonic Matrix B Symmetric Matrix C Fluorescent 2 D Two Graphs E Removal F ...

  4. 2020 牛客多校第一场

    2020 牛客多校第一场 A. B-Suffix Array 后缀数组的思想:倍增+桶排序的方式找出一串连续序列后缀的大小.虽说正常使用的时候都是字典序,但是只要修改排序方式,也能够达到一个类似的&q ...

  5. 【多校训练】2021牛客多校第一场

    [前言] 组队训练的第一场比赛,感觉这场出题十分阴间,后面几个乱搞题根本不会.jpg 赛时只过了5题,rk123,学校参加5/8. A. Alice and Bob [题意] 两人博弈,每次一个人从一 ...

  6. 2018牛客多校第一场 Monotonic Matrix (LGV引理)

    链接:https://www.nowcoder.com/acm/contest/139/A 来源:牛客网 题目描述 Count the number of n x m matrices A satis ...

  7. [2020牛客多校第一场]Coda的题解集

    被暴打了. 会先写比赛中过题数100+的题目,其他的以后再补. 施工中,未完待续- F Infinite String Comparision 一开始想到的是对比到lcm(|a|,|b|),意料之中T ...

  8. 2019年牛客多校第一场B题 Integration 定积分 裂项相消

    题目链接: https://ac.nowcoder.com/acm/contest/881/B 题解: 转发一个大佬的博客,裂项相消,很容易看懂. https://blog.csdn.net/dill ...

  9. FFT ---- 2021牛客多校第一场 H Hash Function

    题目链接 题目大意: 解题思路: 首先我们知道任意两个数%seed\%seed%seed都不相同→\rightarrow→(aj−ai)%seed≠0(∀ai≤aj)(a_j-a_i)\%seed\n ...

  10. 线段树 ---- 2021牛客多校第一场 J Journey among Railway Stations [线段树维护区间可行性判断]

    题目链接 题目大意: 一段路上有 NNN 个点,每个点有一个合法时间段[ui,vi][u_i,v_i][ui​,vi​],相邻两个点有一个长度wiw_iwi​.有qqq次询问,每次询问,在 [ui,v ...

最新文章

  1. 2017海克斯康拉斯维加斯美国大会 精彩即将开始
  2. 实例分割综述(单阶段/两阶段/实时分割算法汇总)
  3. 决策树-随机森林-两种Feature importances排序方法
  4. 搜索引擎技术——全文检索基础原理
  5. roadflow2.1版oracle,RoadFlowVue3.0.2更新日志
  6. Android 机型适配之gradient默认渐变方向
  7. kingwell Calendar V1.0 日历时间组件
  8. jdbctemplate mysql 配置_Spring JDBCTemplate配置使用
  9. 【数据结构】(面试题)使用两个栈实现一个队列(详细介绍)
  10. fgets和fgetl有什么区别
  11. flex布局(弹性布局)
  12. 实战ItemTouchHelper仿网易新闻客户端自定义栏目页面
  13. android串口开发!一年后斩获腾讯T3,附面试题答案
  14. word公式和图片显示不完全
  15. Codeforces 718E Matvey's Birthday bfs
  16. 安装完linux后要做的几件事。
  17. element-ui 中的el-table表格默认的“暂无数据”修改
  18. 昆仑通态组态软件中如何配置modbus数据转发
  19. 华天PDM打通济南重工信息化的“任督二脉”,新动能推动新发展
  20. 一招去除迅雷客户端首页视频 斩掉流氓特性 回归下载本质

热门文章

  1. Neural Collaborative Filtering(NCF) 代码实战(Keras)
  2. NVIDIA DLI——深度学习基础-理论与实践入门
  3. 由浅入深:Python 中如何实现自动导入缺失的库?
  4. 对 Viper RGB 驱动多个缓冲区溢出漏洞的分析
  5. [业内传闻]今天,7月25日是全世界系统网络管理员的节日
  6. html+css+js制作美团界面
  7. 【Proteus仿真】步进电机转速数码管显示
  8. python实现KDJ指标模型 量化策略 python 策略开发
  9. 宝塔 mysql备份 不全_宝塔数据库无法备份,备份完数据总是20b的问题解决。
  10. 《那些年啊,那些事:一个程序员的奋斗史》