【COGS】2287:[HZOI 2015]疯狂的机器人 FFT+卡特兰数+排列组合
【题意】[COGS 2287][HZOI 2015]疯狂的机器人
【算法】FFT+卡特兰数+排列组合
【题解】先考虑一维的情况,支持+1和-1,前缀和不能为负数,就是卡特兰数的形式。
设C(n)表示第n/2个卡特兰数,当n为奇数时为0,即:
$$C_n=\binom{n}{\frac{n}{2}}-\binom{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}*\binom{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]*\binom{n}{i}$$