wannafly 挑战赛9 D 造一造 (卡特兰数)

链接:https://www.nowcoder.com/acm/contest/71/D

时间限制:C/C++ 1秒,其他语言2秒

空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述

WYF正试图用一个栈来构造一棵树,现在他已经构造了n个元素作为树的节点,只要将这n个元素依次入栈出栈就可以形成一棵树了。当然,这个问题与树并没有关系,所以它叫做WYF的栈。每次你可以入栈一个新元素或者当栈非空时出栈一个元素,n个元素必须依次入栈,而WYF希望其中第m个元素入栈之后,栈中恰好有k个元素,现在他想知道一共有多少种入栈出栈顺序满足这个条件。

输入描述:

第一行一个正整数T,表示数据组数。(1<=T<=10000)
对于每组数据包含一行三个正整数n,m,k。

输出描述:

 对于每组数据输出一个正整数表示答案。
 由于答案可能过大,所以只需要输出对109+7取模后的答案
 
示例1

输入

2
3 3 3
3 3 2

输出

1
2
示例2

输入

5
10 3 2
10 2 2
10 7 5
10 6 2
10 7 6

输出

6864
11934
2200
3780
924
示例3

输入

2
5 4 4
5 2 1

输出

5
14

备注:

1<=n,m,k<=1e9
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
很难受,结束完才ac
放一下自己看的卡特兰数的讲解 http://blog.csdn.net/qq_26525215/article/details/51453493 (侵删)


 1 #include <bits/stdc++.h>
 2 #define mst(a,b)    memset((a),(b), sizeof a)
 3 #define lowbit(a)   ((a)&(-a))
 4 #define IOS         ios::sync_with_stdio(0);cin.tie(0);
 5 using namespace std;
 6 typedef long long ll;
 7 const int mod=1e9+7;
 8 const int maxn=2e6+10;
 9 ll jie[maxn],inv[maxn];
10 ll qpow(ll a,ll b){
11     ll ret=1;
12     while(b){
13         if(b&1)ret=ret*a%mod;
14         b>>=1;
15         a=a*a%mod;
16     }
17     return ret;
18 }
19 void init(){
20     jie[0]=inv[0]=1;
21     for(int i=1;i<maxn;++i){
22         jie[i]=jie[i-1]*i%mod;
23         inv[i]=qpow(jie[i],mod-2);
24     }
25 }
26 ll C(int a,int b){
27     return jie[a]*inv[b]%mod*inv[a-b]%mod;
28 }
29 ll get(int a,int b){
30     return (C(a+b,b)-C(a+b,b-1)+mod)%mod;
31 }
32 int main(){
33 #ifdef local
34 freopen("in.txt","r",stdin);
35 //freopen("out.txt","w",stdout);
36 #endif
37     init();
38     int t;scanf("%d",&t);
39     while(t--){
40         int n,m,k;scanf("%d%d%d",&n,&m,&k);
41         if(m<k){
42             printf("%d\n",0);continue;
43         }
44         ll ans=get(m-1,m-k)*get(k+n-m,n-m)%mod;
45         printf("%lld\n",ans);
46     }
47     return 0;
48 }

 

posted on 2018-03-07 21:52  scau_bi  阅读(208)  评论(0编辑  收藏  举报

导航