hdu5184 给出(和)前半段问后面有多少种加括号方法使合法:类似卡特兰数+逆元模板...
题解说的很好呀==
就是拿50和100的买票多少种方案==
1 #include<stdio.h> 2 #include<string.h> 3 #include<algorithm> 4 using namespace std; 5 #define LL long long 6 #define MOD 1000000007 7 LL fac[1000005]; 8 char s[1000005]; 9 LL inv(LL a,LL mod) 10 { 11 LL b=mod,b0=b,t,q,x0=0,x1=1; 12 if (b==1) return 1; 13 while (a>1) 14 { 15 q=a/b; 16 t=b,b=a%b,a=t; 17 t=x0,x0=x1-q*x0,x1=t; 18 } 19 if (x1<0) x1+=b0; 20 return x1; 21 } 22 int main() 23 { 24 LL n,len,a,b,i,judge,p,q,x; 25 fac[0]=1; 26 for (i=1;i<=1000000;i++) fac[i]=fac[i-1]*i%MOD; 27 while (~scanf("%I64d",&n)) 28 { 29 scanf("%s",s); 30 len=strlen(s); 31 a=b=0; judge=1; 32 for (i=0;i<len;i++) 33 { 34 if (s[i]=='(') a++; 35 else b++; 36 if (a<b) judge=0; 37 } 38 if (judge==0||a>n/2||b>n/2||n%2) { 39 printf("0\n"); 40 continue; 41 } 42 p=n/2-b; q=n/2-a; 43 x=(p-q+1)*fac[p+q]%MOD; 44 x=x*inv(p+1,MOD)%MOD; 45 x=x*inv(fac[p],MOD)%MOD; 46 x=x*inv(fac[q],MOD)%MOD; 47 printf("%I64d\n",x); 48 } 49 return 0; 50 }
View Code
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5184
转载于:https://www.cnblogs.com/xiao-xin/articles/4340343.html
hdu5184 给出(和)前半段问后面有多少种加括号方法使合法:类似卡特兰数+逆元模板...相关推荐
- 正方形分成16份,将1到16填入其中。让行和列都是从大到小。问一共有多少种方法?...
看了到面试题: 将正方形分成16份,将1到16填入其中.让行和列都是从大到小.问一共有多少种方法? 此题 解法有: 1. 穷举,基本不用考虑 复杂度O(16!). 2. 枚举+剪枝 .代码如下:得到答 ...
- 0058 编写将1元钱兑换成1分,2分,5分的硬币,问有多少种兑换的方法?将他们一一列举出来。...
问题描述: 编写将1元钱兑换成1分,2分,5分的硬币,问有多少种兑换的方法?将他们一一列举出来. 代码展示: 1 #include<stdio.h>2 #define N 1003 int ...
- 现有n个阶梯,你有两种上法,一次走一步或着走两步,问一共有多少种上法
问现在有N级台阶,你每次可以选择上一步或者上两步,问一共多少种上法? 这是常见的面试题之一,类似的还有生兔子问题,首先我们先来看一看解题的思路,有N级台阶,有两种上法,一次走一步或着一次走两步,如果N ...
- SpaceX载人龙飞船宇航员进入空间站 太空之旅前半段完成
图1:SpaceX载人龙飞船接近国际空间站,准备与其对接 据外媒报道,美国当地时间周日,SpaceX载人龙飞船成功与国际空间站对接,将美国宇航局(NASA)两名宇航员送上了轨道前哨,他们的到来标志着S ...
- 一个m * n的网格,从最左上角出发,每次只能向右或者向下移动一格,问有多少种不同的方法可以到达最右下角的格子
格子路径 题目: 在一个 2×2 的栅格中,从左上角出来,只能向右或向下移动,总共有 6 条路径可以到达栅格的右下角: 求m*n的网格中,有多少条移动路径? 以一个 20×20 的栅格为例,它有137 ...
- n级阶梯,每次走一步或两步,问最多有多少种走法
遇到这道题两次了,现在来总结下. 方法一:运用组合数学的思想.假设在整个过程中,我有k次走了两步,那么剩下的n-2k次我走的都是一步,那么我总的走的步数是k+n-2k.则结果为从n-k里面选了k次走两 ...
- 羽毛球拍15元,羽毛球3元,水2元,一共有180元,要求每样最少买一件,问一共有多少种可能
#a是为了求次数,去掉a就可以查看所有可能 a=1 for p in range(1,12):for b in range(1,60):for w in range(1,90):if p * 15 + ...
- 卡特兰数:2N个人排队买电影票,N个人持5元买票,N个人持10元买票.售票处在售票前只有票没有钱,票价5元 ,问有多少种排队方式 能让2N个人顺利买票,并且输出所有排队队列(不会因为找钱问题)
分析 n = 0 时,队列为空,可以认为只有一种: n = 1 时,队列:5 ,10 共有1种: n = 2 时 ,队列: 5, 10,5,10 5,5,10,10 共有两种 n = 3时, 队 ...
- Bailian4077 出栈序列统计【卡特兰数】(vijos P1122)
问题链接:vijos P1122 出栈序列统计. 出栈序列统计 总时间限制: 100ms 内存限制: 64kB 描述 栈是常用的一种数据结构,有n个元素在栈顶端一侧等待进栈,栈顶端另一侧是出栈序列.你 ...
最新文章
- MVVM开发模式MVVM Light Toolkit中使用事件和参数传递
- 机房布线的至高境界,美到窒息!
- 关于VC向导生成的COM的注册与反注册
- 注册MSComm方法
- linux禁止修 5在线阅读,linux – 如何在不重新编译内核的情况下禁用CentOS 5.3中的nf_conntrack内核模块...
- Java面试题目,java关键字final
- cron每2天跑一次_直购直测,进口新极光每2年或34000公里才需要保养一次?
- ambari mysql jar_从零开始安装 Ambari (3) -- 安装 Ambari
- AcWing 901. 滑雪(记忆化搜索)
- Linux常用知识与命令
- chrome浏览器控制台执行js脚本
- 欧瑞变频器故障码表_变频器常见故障处理.doc
- 信度和效度经典例子_信度与效度公式的纠正
- 形容等待时间长的句子_形容等待已久的事终于等到句子
- 读取NTFS的USN(获取文件的历史操作记录,即使这个文件已被删除)
- 计算机为何用二进制而不用十进制,为什么计算机使用二进制而不是十进制?
- 华科计算机硕士什么时候能去实习,研究生期间是出去实习还是老老实实做科研?...
- LAMP详细架构过程
- Python实践-咚咚呛讲师Python进阶教程
- Liang-GaRy啃linux书想吐(一)