SRM 618 DIV1 500

时间:2023-12-10 08:30:32

非常棒的组合问题,看了好一会,无想法....

有很多做法,我发现不考虑顺序的最好理解,也最好写。

结果一定是两种形式

A....A   dp[n-1]

A...A...A sgma(dp[j]*dp[n-j-1])( 1<=j<=n-2)

最后乘上n!

什么时候才能自己在比赛中做出一个500分来啊!!!

class LongWordsDiv1
{
public :
int count(int n)
{
int i,j;
fact[] = ;
for(i = ; i <= n; i ++)
{
fact[i] = (i*fact[i-])%MOD;
}
dp[] = ;
dp[] = ;
for(i = ; i <= n; i ++)
{
dp[i] = dp[i-];
for(j = ; j < i-; j ++)
{
dp[i] = (dp[i] + (dp[j]*dp[i-j-])%MOD)%MOD;
}
}
return (dp[n]*fact[n])%MOD;
}
};