CF1580F Problems for Codeforces

考虑 \(n\) 为偶数的情况。

此时限制为 \(a_1\le m-1-a_2\ge a_3\le ... \le m-1-a_n \ge a_1\)。下面让 \(a_{2i}\to m-1-a_{2i}\)

可以对 \(\le\) 容斥,钦定若干个 \(\le\) 的位置填 \(>\),则环为若干个不等式链 \(a_1\ge a_2 > .. > a_{2n-1}\ge a_{2n}\) 拼成。

每段的生成函数为:\(\displaystyle \sum_{n>0}\binom{m+n}{2n}x^n\)

拼成环的话,钦定 1 与下一个位置断开,方案数为每段方案乘以 1 所在的段长。

设每段的生成函数为 \(F\),那么 1 所在的段贡献为 \(xF'\),则拼成环的生成函数为 \(\dfrac{xF'}{1-F}\)


考虑 \(n\) 为奇数的情况。由于相邻两个一定有一个 \(\le \lfloor \frac{m}{2} \rfloor\),把 \(\le \lfloor \frac{m}{2} \rfloor\) 的数标为小数,大于的标为大数。

则可以发现环为 小大小大小大小 的若干段拼成,在相邻两个小数间切开可得。于是就转化为链的问题,最后拼成环就行。

考虑把大数减去 \(\lceil \frac{m}{2} \rceil\)。这样就变成了在链上的,限制为 \(\lfloor \frac{m}{2} \rfloor\) 的子问题,可以用上文的容斥计算生成函数。

注意 \(m\) 为奇数时,\(\lfloor \frac{m}{2} \rfloor\) 在上面子问题的计算中没被用上。但这个数作为小数,只能自成一段,于是很好处理。

$$\Huge \text{Goodbye OI}$$
原文地址:https://www.cnblogs.com/Rainbowsjy/p/15785560.html