【JZOJ 5192】容器

題目

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; 
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章