題目描述
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<=10^6
思路:
卡特蘭數參考這個大神的部落格這裡寫鏈結內容
剩下的就很簡單了。。。
accode
#include
#define ll long long
#define inf 0x3f3f3f3f
using namespace std;
const int maxn = 1e6+2;
const ll mod = 1e9+7;
ll jie[maxn*2];
int n;
intm;
int k;
int t;
ll ksm(ll a,ll b)
return ret;
}void init()
}ll c(ll n,ll m)
ll cal(ll n,ll m)
int main()
printf("%lld\n",cal(n-m+k,n-m)%mod
*cal(m-1,m-k)%mod
%mod);
}}
Wannafly挑戰賽6 D 鎖
時間限制 c c 1秒,其他語言2秒 空間限制 c c 131072k,其他語言262144k 64bit io format lld 題目描述 106號房間共有n名居民,他們每人有乙個重要度。房間的門上可以裝若干把鎖。假設共有k把鎖,命名為1到k。每把鎖有一種對應的鑰匙,也用1到k表示。鑰匙可以複...
Wannafly挑戰賽16 D 打怪(DP)
時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 有a種 b種屬性,和c種怪物。對於第k種怪物,給出 i和屬性j的搭配在乙個單位時間內對其造成的傷害h k,i,j。已知一開始使用 i,需要時間x i,使用屬性i,需...
Wannafly挑戰賽20 D挑選隊友
d 挑選隊友 進入討論 77 304 通過輸入包括兩行 第一行包括三個數n,m,k,表示共有n位選手,m個群,需要有k名選手被選擇 第二行包括m個數,第i個數表示第i個群有si個選手 n 100000,m k n 輸出包括一行 第一行輸出方案數 由於輸出可能比較大,你只需要輸出在模998244353...