CSP-S 2024 第十四次

A

调整法可证只需要考虑左端点或右端点在 \(a_i\) 上的区间,考虑对于一个区间 \([l,r]\) 计算答案。

注意到对于每对相邻的数,挤压后较大者仍然大于等于较小者,所以可以分别求较大者压缩后的和、较小者压缩后的和再相减。

以求较大者压缩后的和为例,小于 \(l\) 的数变成 \(l\),大于 \(r\) 的数变成 \(r\),中间的数不变,

把所有较大数排序后,二分出两个分界点,统计答案即可。

B

\(f_{u,0/1,0/1,0/1}\) 表示考虑 \(u\) 子树,\(u\) 是/否匹配上,子树内最左边的叶子是/否匹配上,子树内最右边的叶子是/否匹配上的方案数。

转移有一些细节,比如说加上的子树是一个叶子或者一条链的情况。

C

为了防止 corner case,先在左右各补一列,钦定最左边的一列必走第一行,最右边的一列必走第二行,

\((1,0)\)\((1,1)\) 的边权、\((2,n)\)\((2,n+1)\) 的边权为 \(0\)\((1,n)\)\((1,n+1)\) 的边权、\((2,0)\)\((2,1)\) 的边权为 \(\infty\)

考虑最小割建模。

对于 \(0\le i\le n\),由源点向 \(i\) 连边权为 \((2,i)\)\((2,i+1)\) 的边权的边,由 \(i\) 向汇点连边权为 \((1,i)\)\((1,i+1)\) 的边权的边,

这样保留源点到 \(i\) 的边就相当于走了 \((1,i)\)\((1,i+1)\) 的边,保留 \(i\) 到汇点的边就相当于走了 \((2,i)\)\((2,i+1)\) 的边。

考虑特殊限制,相当于同时保留源点到 \(i\) 的边与 \(j\) 到汇点的边时产生额外 \(c\) 的代价,由 \(i\)\(j\) 连边权为 \(c\) 的边即可。

考虑 \((1,i)\)\((2,i)\) 之间的边,可以发现其实就是 \(i-1\)\(i\) 保留不同侧的边时产生额外代价,和特殊限制是一样的。

D

枚举众数出现次数 \(k\),考虑众数出现次数小于等于 \(k\) 的序列的 EGF,发现它是 \(\left(\sum\limits_{i=0}^k\dfrac{x^i}{i!}\right)^m\),需要求其 \(n\) 项系数。

\(e_k(x)=\sum\limits_{i=0}^k\dfrac{x^i}{i!}\),考虑对需要求的 \(e_k^m(x)\) 求导:

\[\begin{aligned} (e_k^m(x))'=&me_k^{m-1}(x)e_k'(x)\\ =&me_k^{m-1}(x)\left(e_k(x)-\dfrac{x^k}{k!}\right)\\ =&me_k^m(x)-\dfrac{mx^k}{k!}e_k^{m-1}(x) \end{aligned} \]

\(f_{m,n}=[x^n]e_k^m(x)\),对上式两边同时提取 \(n\) 项系数:

\[\begin{aligned} [x^n](e_k^m(x))'&=[x^n]me_k^m(x)-[x^n]\dfrac{mx^k}{k!}e_k^{m-1}(x)\\ (n+1)f_{m,n+1}&=mf_{m,n}-\dfrac m{k!}f_{m-1,n-k} \end{aligned} \]

于是我们得到了 \(f\) 的递推式。

发现只需要求 \(f\) 的最后 \(n/k\) 行,所以复杂度 \(O(n^2/k)\)。总复杂度 \(O\left(\sum\limits_{k=1}^nn^2/k\right)=O(n^2\log n)\)

posted @ 2024-09-24 17:22  5k_sync_closer  阅读(150)  评论(27编辑  收藏  举报