【题意】[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}$$