wannafly 挑戰賽9 D(卡特蘭數)

2021-08-16 18:07:49 字數 1233 閱讀 2285

題目描述

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...