题目连接

https://www.acwing.com/problem/content/891/

思路

因为有n个1和n个0,那么最后一定能走到点(n,n),我们正面去想不太好想,所以我们可以看看中间出现1的数量比0多的情况,对于这个放法我们可以化成一个平面图,1表示向右走一步,0表示向上走一步,那么对于我们现在要求的反面就是要经过y=x+1y=x+1y=x+1这一条线的方案数,我们可以对这条线做(n,n)的一个对称图形也就是(n-1,n+1),我们会发现这个一个位置的方案数为:C2nn−1C_{2n}^{n-1}C2nn−1​,对于走到(n,n)的所有方案数为:C2nnC_{2n}^{n}C2nn​,那么我们直接做一个差就好啦,化简后就是:
C2nnn+1\frac{C_{2n}^{n}}{n+1}n+1C2nn​​这个数也被称为卡特兰数

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mod 1000000007ll ksm(ll a,ll b){ll res = 1;for(;b;b>>=1,a=a*a%mod) if(b & 1) res = res * a % mod;return res;
}ll C(ll a,ll b){b = min(a-b,b);ll ansL = 1,ansR = 1;for(int i = 1;i <= b; ++i){ansL = ansL * (a-i+1) % mod;ansR = ansR * i % mod;}ll ans = ansL * ksm(ansR,mod-2) % mod;return ans;
}ll slove(ll n){return (C(2*n,n)-C(2*n,n-1) + mod) % mod;
}int main()
{ll a;scanf("%lld",&a);printf("%lld\n",slove(a));return 0;}

AcWing 889. 满足条件的01序列(卡特兰数)相关推荐

  1. 【算法专题】卡特兰数

    卡特兰数 1. 概述 卡特兰数:首先这个一个数,很多问题的结果都是卡特兰数,比如2016年全国三卷数学选择题压轴题让求解的就是卡特兰数,问题如下: 首先是结论:卡特兰数为: C 2 n n n + 1 ...

  2. 卡特兰数(高精度乘法压位)

    889. 满足条件的01序列 题目 提交记录 讨论 题解 视频讲解 给定 n 个 0 和 n 个 1,它们将按照某种顺序排成长度为 2n 的序列,求它们能排列成的所有序列中,能够满足任意前缀序列中 0 ...

  3. Catalan数——卡特兰数

    今天阿里淘宝笔试中碰到两道组合数学题,感觉非常亲切,但是笔试中失踪推导不出来 后来查了下,原来是Catalan数.悲剧啊,现在整理一下 Catalan数--卡特兰数] 一.Catalan数的定义令h( ...

  4. 程序员数学--卡特兰数(Catalan number)

    10个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问有多少种排列方式? 我们可以先把这10个人从低到高排列,然后,选择5个人排在第一排,那么剩下的5个人肯定是在第二 ...

  5. 卡特兰数Catalan

    1.卡特兰数的性质 其实重要的就两个公式:1和3. 公式1是卡特兰数的通项公式. 公式2是卡特兰数的递归公式.注意递推公式是C n+1=- 通常是发现问题可以用卡特兰数的递推公式来解决,从而想到卡特兰 ...

  6. 2017百度之星程序设计大赛 - 资格赛【1001 Floyd求最小环 1002 歪解(并查集),1003 完全背包 1004 01背包 1005 打表找规律+卡特兰数】...

    度度熊保护村庄 Accepts: 13 Submissions: 488 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/3276 ...

  7. Bailian4077 出栈序列统计【卡特兰数】(vijos P1122)

    问题链接:vijos P1122 出栈序列统计. 出栈序列统计 总时间限制: 100ms 内存限制: 64kB 描述 栈是常用的一种数据结构,有n个元素在栈顶端一侧等待进栈,栈顶端另一侧是出栈序列.你 ...

  8. 线段树分裂与合并 ----- P2824 [HEOI2016/TJOI2016]排序 [线段树分裂合并 OR 01序列排序+二分线段树]

    题目链接 题目大意: 对一个序列,每次按照升序或者降序排序序列某一段,问你最后的序列是什么? 解法1:二分+线段树 首先我们知道对一个01序列进行排序是很快的!我们只要知道里面有多少个1和多少个0,那 ...

  9. 1.4编程基础之逻辑表达式与条件分支 01判断数正负

    http://noi.openjudge.cn/ch0104/01/ /* 1.4编程基础之逻辑表达式与条件分支 01判断数正负 http://noi.openjudge.cn/ch0104/01/ ...

最新文章

  1. 人脸识别是大势所趋 加速落地“普惠AI”
  2. Linux运维之批量下载指定网站的100个图片文件,并找出大于200KB的文件
  3. 每个软件工程师都应该尝试的5件事
  4. 官宣!极客邦科技获2000万元 A 轮融资,全面发力知识服务平台
  5. 如何在ASP.NET Core中使用SignalR构建与Angular通信的实时通信应用程序
  6. vue router 跳转php,vue路由:路由跳转后怎么知道切换到那个router-view中
  7. ping命令linux软件包,linux下安装 ping 命令
  8. uniapp 移动端上传文件_基于 uniapp 实现动态路由和动态 Tabbar
  9. 计算机标准化管理制度,计算机中心标准化管理.doc
  10. Vuex源码阅读分析
  11. CSS content 属性 CSS counter-increment 属性 CSS counter-reset 属性
  12. python下载离线包
  13. Crystal Reports - Add Subreport
  14. Unity3d Network 局域网多人对战之游戏大厅
  15. idea格式化代码时,注释被格式化问题
  16. spring5、springboot和springcloud的区别
  17. Qt 实现 别踩白块儿。
  18. 解决conda install pkgs found conflict问题
  19. 如何在 Mac 上更改鼠标光标颜色?
  20. please insert the disc labeled ‘Ubuntu 18.04.5 LTS _Bionic Beaver_ - Release amd64 (20200806.1)‘ in

热门文章

  1. mac上c++11的编译问题
  2. QObject: Cannot create children for a parent that is in a different thread.
  3. Latex 图像总是出现在目标页的下一页置顶
  4. ComBox、listBox、checklistBox控件
  5. JSP三大指令、七大动作、九大对象
  6. Android ViewPager+TabHost实现首页导航
  7. 查看MySQL数据库大小
  8. 在linux下安装iNode校园客户端
  9. Intellij IDEA 14.x 菜单项中Compile、Make和Build的区别
  10. opencart china 书籍主题