【COGS】2287:[HZOI 2015]疯狂的机器人 FFT+卡特兰数+排列组合

【题意】[COGS 2287][HZOI 2015]疯狂的机器人

【算法】FFT+卡特兰数+排列组合

【题解】先考虑一维的情况,支持+1和-1,前缀和不能为负数,就是卡特兰数的形式。

设C(n)表示第n/2个卡特兰数,当n为奇数时为0,即:

$$C_n=inom{n}{frac{n}{2}}-inom{n}{frac{n}{2}-1},n\%2=0$$

卡特兰数可以通过预处理阶乘和逆元后O(1)计算。

设f[n]表示走n步回到原点的操作序列数,那么答案要求所有f[i],通过枚举纵向行走的数量,很容易得到:

$$f[n]=sum_{i=0}^{n}C_i*C_{n-i}*inom{n}{i}=n!*sum_{i=0}^{n}frac{C_i}{i!}*frac{C_{n-i}}{(n-i)!}$$

卷积,复杂度O(n log n)。

最后答案是:

$$ans=sum_{i=0}^{n}f[i]*inom{n}{i}$$

原文地址:https://www.cnblogs.com/onioncyc/p/8870357.html