題目
Description
Input
Output
Sample Input
樣例一:3 2 1
樣例二:15 6 4
Sample Output
樣例一:10
樣例二:458177764
Data Constraint
Hint
樣例一解釋:
思路
設f[i][p][q]表示剛剛確定了i的右括號,和i+1的左括號,匹配了p個區間,還有q左括號。
轉移就枚舉下一個選多少
代碼
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=45,mod=1011110011;
int n,k,T,f[N][N][N],c[N][N];
int main()
{
freopen("container.in","r",stdin); freopen("container.out","w",stdout);
scanf("%d%d%d",&n,&k,&T);
for(int i=0; i<N; i++) c[i][0]=1;
for(int i=1; i<N; i++) for(int j=1; j<=i; j++) c[i][j]=(c[i-1][j]+c[i-1][j-1])%mod;
f[0][0][0]=1;
for(int i=0; i<=n; i++)
for(int j=0; j<=k; j++)
for(int l=0; l<=j && l<=T; l++)
if(f[i][j][l])
for(int x=0; j+x<=k; x++)
for(int y=0; y<=l; y++)
if(l-y+x<=T)
f[i+1][j+x][l-y+x]=(f[i+1][j+x][l-y+x]+(ll)f[i][j][l]*c[l][y]%mod*c[j+x][x]%mod)%mod;
printf("%d",f[n+1][k][0]);
return 0;
}