链接:https://ac.nowcoder.com/acm/contest/881/E

题目描述

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)(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≤n,m≤103* There are at most 2019 test cases, and at most 20 of them has max{n,m}>50max{n,m}>50.

输出描述:

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

输入

复制

1 2
1000 1000
0 0

输出

复制

13
436240410
1思路:一开始讨论,想的是个找规律(虽然我读不懂题,也猜不对)。后来看了题解,才知道是个dp。          是酱紫的,题目说有N个AB,M个BA,那你就要注意到(A的个数)=(B的个数),尝试在A或B后面加A、B,但是这样很麻烦,所以就直接在A后面加AB,在B后面加BA。其中:DP的时候(A的个数  )<=(n+B的个数),(B的个数  )<=(m+A的个数)。首先你要选取A在开头或是B在开头,然后选他们后面跟了什么(A后面尝试加AB,试试有多少种可能)(B后面尝试加BA,试试有多少种可能),然后把两者相加,就是答案。*我队友:“来自那啥的肯定”
#include <cstdio>
#include <iostream>
#include <string>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <queue>
#include <vector>
#include <map>
using namespace std;
#define ll long long
int mod = 1e9+7;int dp[5000+8][5000+8];int main()
{int n, m;while(~scanf("%d%d", &n, &m)){for(int i = 0; i <= n+m; i++)for(int j = 0; j <= n+m; j++)dp[i][j] = 0;dp[0][0] = 1;for(int i = 0; i <= n+m; i++)//A的个数
        {for(int j = 0; j <= m+n; j++)//B的个数
            {int cA = i;//尝试插入Aint needAB = n-cA;//A后面连接多少个ABif(needAB>n+m-j)continue;elsedp[i+1][j] = (dp[i+1][j]+dp[i][j])%mod;int cB = j;//尝试插入Bint needBA = m-cB;//B后面连接多少个BAif(needBA>n+m-i)continue;elsedp[i][j+1] = (dp[i][j+1]+dp[i][j])%mod;}}printf("%d\n", dp[n+m][n+m]);}return 0;
}

转载于:https://www.cnblogs.com/RootVount/p/11228164.html

2019牛客暑期多校训练营(第一场)E题 ABBA(DP)相关推荐

  1. 2019牛客暑期多校训练营(第一场场)_I题Points Division(线段树+DP维护区间最大值)

    题目链接: https://ac.nowcoder.com/acm/contest/881/I 题意: 给你n个点,每个点的坐标为(xi,yi),有两个权值ai,bi. 现在要你将它分成A,B两部分, ...

  2. [题解] 2019牛客暑期多校第三场H题 Magic Line

    题目链接:https://ac.nowcoder.com/acm/contest/883/H 题意:二维平面上有n个不同的点,构造一条直线把平面分成两个点数相同的部分. 题解:对这n个点以x为第一关键 ...

  3. 2020牛客暑期多校训练营(第九场)E题 Groundhog Chasing Death

    题意 计算 ∏ i = a b ∏ j = c d g c d ( x i , y j ) \prod_{i=a}^{b}\prod_{j=c}^{d}gcd(x^i,y^j) i=a∏b​j=c∏d ...

  4. 2019牛客暑期多校训练营(第三场)H.Magic Line

    2019牛客暑期多校训练营(第三场)H.Magic Line 题目链接 题目描述 There are always some problems that seem simple but is diff ...

  5. 2019牛客暑期多校训练营(第五场)C generator 2 (BSGS)

    2019牛客暑期多校训练营(第五场)C generator 2 思路 x0=x0x_0 = x_0x0​=x0​ x1=a∗x0∗bx_1 = a * x_0 * bx1​=a∗x0​∗b x2=a∗ ...

  6. 2019牛客暑期多校训练营(第四场)----E- triples II

    首先发出题目链接: 链接:https://ac.nowcoder.com/acm/contest/884/E 来源:牛客网 涉及:位运算,容斥定义,dp 点击这里回到2019牛客暑期多校训练营解题-目 ...

  7. 2021牛客暑期多校训练营2,签到题CDFKI

    2021牛客暑期多校训练营2 题号 标题 已通过代码 通过率 团队的状态 A Arithmetic Progression 点击查看 6/72 未通过 B Cannon 点击查看 34/104 未通过 ...

  8. 2019牛客暑期多校训练营(第一场)

    传送门 参考资料: [1]:官方题解(提取码:t050 ) [2]:标程(提取码:rvxr ) [3]:牛客题解汇总 A.Equivalent Prefixes(单调栈) •题意 定义两个数组 u,v ...

  9. 【2019牛客暑期多校训练营(第一场) - A】Equivalent Prefixes(单调栈,tricks)

    题干: 链接:https://ac.nowcoder.com/acm/contest/881/A 来源:牛客网 Two arrays u and v each with m distinct elem ...

  10. 2019牛客暑期多校训练营(第一场)E-ABBA(dp)

    链接:https://ac.nowcoder.com/acm/contest/881/E 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 524288K,其他语言1048 ...

最新文章

  1. 《学习之道》第十章总结
  2. php domdocument getelementbyid,PHP DOMDocument- getElementByID添加Â代替空
  3. Linux 常用命令二 pwd cd
  4. MySQL学习(5)数据库备份
  5. 使用React和axios设置服务器端渲染的最简单方法
  6. 在页面中直接设计TreeView的节点而不使用Web.Sitemap文件在运行时出错信息
  7. SpringBoot2.6.5整合CXF框架
  8. 火焰识别python_OpenCV_火焰检测——完整代码
  9. 基于Eclipse+Java+Swing+Mysql实现旅游管理信息系统
  10. mysql got signal 11_mysqld got signal 11问题定位
  11. 渥太华大学计算机硕士课程,渥太华大学留学生经验分享:攻克语言关最简单的方法就是少用中文...
  12. 三角形的分类c语言,C语言 输入三角形的三边,判断三角形的类型,并输出它的类型和面积...
  13. 除了QQ就是一塌糊涂的日子不会再有了
  14. 微信支付出现故障,程序员的高薪理所当然
  15. 设计模式 -- 组合模式(Composite)
  16. 完美解决“未能装载Office文档控件。请使用Internet Explorer(6.0+)浏览器并检查浏览器的安全设置。”的方案
  17. 【封面】华为解读“生态伙伴”
  18. Delphi中资源文件使用详解
  19. 模态对话框和非模态对话框的区别1
  20. 利用photoshop切图

热门文章

  1. 老虎Sitemap生成器 0.3
  2. 聊几个与赚钱相关的小事情
  3. 原生js实现一个连连看小游戏(一)
  4. 【bzoj1304】[CQOI2009]叶子的染色 树形dp
  5. 使用FileSystemWatcher监视指定目录
  6. Atitit.获取approot api 应用根路径 java c#.net php asp
  7. Ubuntu 12.04LTS 找不到eth0网卡
  8. 跟小静读《jQuery权威指南》——目录
  9. 关于Session接口的update方法主要有如下几点要注意
  10. 不可错过!华为终端云服务带来Mate 20系列专属礼包