闲话 6.19/CF1938M

CF1938M

计数以下序列 \(\lang a\rang\) 的个数:

\[\sum_{i=1}^m a_i=n\\ \forall 1<i<m,(a_i-a_{i-1})(a_i-a_{i+1})>0 \]

给出 \(n(n\le 3\times 10^5)\)

这里的形式大约是 $a_1<a_2{\color{red} >}a_3<a_4{\color{red} >}a_5<a_6\dots $,我们把红色部分拿来容斥。这里把 \(\color{red}>\) 换成 \(\le\) 或者无限制,一个 \(\le\) 就是容斥系数 \(-1\)

怎么对这样的东西展开计数?我依据“无限制”分开新的序列,把 \(a_1<a_2\le a_3<a_4 ?a_5<a_6\le a_7\dots\) 这里的 \(a_{1:4}\) 和后面的分开。我只需要对一个 \(a_1<a_2\le a_3<a_4\) 型序列计算生成函数后做 SEQ 即可。

这样的序列计算是不难的:只需计算乘积:

\[(1+x-x^2+x^3-x^4+\dots )\times (1+x^2-x^4+x^6-x^8+\dots)\times \dots \]

化出来就是

\[\frac{\prod (2+x^i)}{\prod(1+x^i)} \]

这是 q-二项式定理及其 \(O(n\sqrt n)\) DP 可以解决的问题。

posted @ 2024-06-20 11:01  British_Union  阅读(11)  评论(2编辑  收藏  举报