Examples

2023-6-26 #61 这样的我终究 会到达怎样的对岸 又会停滞吗

——46_P 她追逐着月光的尽头

414 P8923 『MdOI R5』Many Minimizations

与 AGC049E Increment Decrement 很像的一道题,循序渐进,没有思维天堑,但难度也不低。

原问题是经典的 slope trick(CF713C Sonya and Problem Wihtout a Legend),我们的解决方法是:列出 dp 转移——加 \(|x-a_i|\),作前缀 \(\min\)。使用堆维护操作,容易发现其等价于:push 两个 \(a_i\),权值加上最大值减 \(a_i\),pop 最大值。

经过一些计算,问题可以变成求最后堆内所有数的和,枚举一个 \(t\) 统计最后对内 \(\geqslant t\) 的数数量和,此时容易得到一个类似格路行走的 \(O(nm)\) dp,而答案关于 \(x\) 显然是多项式,于是我们能做到 \(O(n^3)\)

\(0\)\(\max\) 有一个经典的刻画方式:找到 \(y\) 坐标最小的点,将格路整体向上平移使得该点 \(y\) 恰好为 \(0\),因此路径的限制变成:从 \(x=0\) 的任意位置开始,不能越过 \(y=0\),碰触 \(y=0\) 至少一次,最后的贡献是最终位置的 \(y\) 坐标。

碰触 \(y=0\) 至少一次的限制可以容斥掉 \(y\geqslant 1\) 的情况,使用折线法,假设终点为 \((n,i)\),使用了 \(j\) 次右下步,方案数为:

\[\sum_i i\times (\sum_{i+j-(n-j)\geqslant 0} t^j(m-t)^{n-j}(({n\choose j}-{n\choose i+j+1})-({n\choose j}-{n\choose i+j}))) \]

因此容易求出答案关于 \(t\) 的多项式,后面的计算就很简单了,复杂度 \(O(n^2)\)

415 牛客多校2022 Round10 C Magic Ritual

挺好的题。

一个经典的性质是树上两个连通块的交仍是连通块,因此每种选择方案在每个时刻都是连通块。

因此对于任意时刻,树可以划分成若干个连通块(注意划分的是边不是点),每个连通块对应唯一的选择序列,且从前一个时刻到后一个时刻,只会发生连通块的分裂时间。

按照时刻从前往后 dp,记录保留下来了某个连通块,\(O(点数)\) 进行转移即可,复杂度 \(O(nm)\)

416 P5564 [Celeste-B]Say Goodbye

树的计数显然是卡特兰数(由于加上根要乘上 \(x\)),其 OGF 记作 \(T(x)\)

枚举环长后,burnside 一下,显然只要枚举一个约数,于是列出式子:

\[\sum_{k\geqslant 2}\sum_{d\mid k,d\mid g}\varphi(d)\frac{(\frac nd)!}{\prod(\frac{c_i}{d})!}[x^{\frac nd}]T^{kd} \]

有一种暴力推式子最后多项式 ln 的方法,这里不提。

根据 367 Yuhao Du Contest 11 M Minimum Element Problem 的经验,卡特兰数 \(k\) 次幂的公式为:

\[[x^n]C^m(x)={2n+m-1\choose n+m-1}-{2n+m-1\choose n+m} \]

上一篇博客说了组合意义的反射容斥推法,这里记录一下拉反推法:

由于 \(C(x)=1+xC^2(x)\) 有常数项,我们记 \(B(x)=C(x)-1\),此时 \(B(x)=x(B(x)+1)^2\),故其复合逆 \(A(x)=\frac{x}{(x+1)^2}\),所求即 \([x^n](D\circ B)(x)\),其中 \(D(x)=(x+1)^k\)

扩展拉格朗日反演:

\[[x^n](D\circ B)(x)=\frac 1n[x^{n-1}]D'(x)(\frac{x}{A(x)})^n\\ =\frac 1n[x^{n-1}]k(x+1)^{k-1}(x+1)^{2n}\]

容易提取系数,整理一下可以得到相同的形式。

稍微推一推式子就可以得到一个 \(O((n+m)d(n))\) 的做法。

417 P5115 Check,Check,Check one two!

非 ds 做法还是比较有意思的。

注意到 lcp 拼接 lcs 后是一个基本字串结构中的代表元,我们尝试枚举代表元,那么其贡献系数为:

\[\sum_i[i\leqslant k1,l-i\leqslant k_2]i(l-i) \]

容易 \(O(1)\) 计算,我们只需考虑这个代表元的出现次数。

枚举 SAM 上某一结点,仅有最长串可能成为代表元,而且其左端已经极长。考虑容斥掉右端不极长的情况,只需记录每个等价类所有 endpos 下一个位置上的字符的分布,复杂度 \(O(n|\Sigma|)\)

418 冷静一下

喵了个喵 4

如果颜色数量大于 \(n\) 一定无解,小于 \(n\) 则一定有解——我们可以考虑不断贪心地使用一操作消除,若不能使用一操作一定会出现空栈(根据抽屉原理),我们使用二操作放入空栈并继续操作,一定能进行完。

只需考虑颜色数为 \(n\),尝试类似上面的策略,容易证明按任意顺序优先进行一操作一定不劣。

我们令一个颜色最大的值为 A,次大的值为 K(若存在)。

对于一次合法的消除过程,考察最后一次二操作,此时一定是移动一个 A 到空栈,且其余 A 都在其余栈的栈底(根据上面的贪心策略显然)。对于大小为一的栈,这些颜色可以忽略(一出现就可以消除)。

可以证明此时其余非栈底元素都是 K,具体证明需要比较复杂的讨论,可以看官方题解

此时胜利的条件即为:存在一个序列 \(s_{1,\cdots,k}\),使得 \(s_1\) 栈底元素是该颜色唯一元素,\(s_k\) 栈中有两个 A,且所有 \(s_i\) 栈底都是 A,所有 \(i<k\) 的非栈底都有 \(s_{i+1}\) 的 K。

充要性不难证明,注意到在原始栈序列这些位置的元素不会有区别,因此在原始栈序列中进行 A 与 K 之间的连边,并以所有单独 A 作为源点,两个 A 共存的栈作为汇点 bfs 检查是否有路径即可。当然我们还要检查只使用一操作能不能消出空栈,以及能不能消完。

复杂度 \(O(\sum nm)\)

419 湖南集训2021 Day4T2 梧桐依旧

很精致的题目,场上只有 wyl 通过,而且据说是观察出来的式子,非常恐怖。

如果掌握一些 q 相关科技这题应该比较简单,可惜我不会。

我们将这样的 \(A\) 看作变换 \(B\) 下的不动点,逆用 Burnside 引理 \(|X/G|=\frac{1}{|G|}\sum_g|X^g|\),只需求 \(|X/G|\)\(|G|\)
后者即 \(B\) 的数量,满秩矩阵数量只需从前往后考虑方案数:

\[\prod_{i=0}^{n-1}(p^n-p^i) \]

还需考虑计算等价类数量,我们枚举 A 的秩 \(k\),容易发现只需关心 \(k\) 行,我们注意到 \(A\rightarrow BA\) 是一个 \(A\)\(A\) 的映射,且每个矩阵的出现次数都是 \(B\) 的数量,因此这一部分的方案数为:

\[\sum_{i=0}^n\prod_{j=0}^{i-1}\frac{p^n-p^j}{p^k-p^j} \]

复杂度 \(O(n)\)

420 Planetarian

shaber 题。

我们只关心两个后缀的 lcp,在 parent tree 上做 dsu on tree 即可得到 \(O(n\log n)\) 个支配对。

不妨先考虑如何计算 \(f(l,r)\),对于后缀 \(\operatorname{lcp}(S_x,S_y)=z\),其贡献是 \(\min(z,r-y+1)\),要求 \(l\leqslant x\leqslant y\leqslant r\),我们分讨拆开 \(\min\) 即变为二维偏序,主席树维护即可。

接下来二分答案,检查保留 \(a_i\leqslant mid\) 的位置是否有解,我们找到 \(l\) 后第一个 \(>mid\) 的位置与 \(r\) 前第一个 \(>mid\) 的位置,我们暴力计算这两个散块,中间每一个 \(\leqslant mid\) 的块都是区间最小值的控制区间(即作为区间最小值,最左的 \(l\) 与最右的 \(r\)),其只有 \(n\) 个。离线按照权值从小到大加入这些区间,主席树记录一下权值就好了。

复杂度 \(O(n\log^2 n)\),常数非常大。一个卡常技巧:我们有时只需查询区间最值是否 \(\geqslant z\),若这个线段树结点整体 \(<z\) 就不递归下去。

421 CF1086F Forest Fires

\(O(n^3\log n)\) 的做法很显然,注意到答案是关于时间的 \(O(n^2)\) 段三次函数(交的面积是二次函数,并的面积是交的线性组合,仍然是二次,求和变三次),每次做矩阵面积并 \(O(n\log n)\)

事实上本题可以做到 \(O(n^2)\),我们直接列出矩阵交容斥的式子:

\[\sum_S(-1)^{|S|+1}((t+1)F_S(t)-\sum_{i=0}^tF_S(i)) \]

\(F_S(t)\) 表示点集 \(S\) 在时刻 \(t\) 的交集大小,列出式子后可以发现其只与,\(x,y\) 坐标最大最小值有关。

注意到一个关键性质——若已经确定 \(x,y\) 最值确定的矩形,矩形内部若有点贡献一定为零。

枚举左右边界的两个点,这两个点形成的矩形内部一定不能有点。此时只会有四种情况:只有这两个点,这两个点加上纵坐标前驱/后继,同时加上。

系数容易计算,维护前驱后继只需枚举一个点,另一个点按照横坐标倒序枚举,只需支持删除一个可能成为前驱后继的点,使用链表维护即可,复杂度 \(O(n^2)\)

注意横坐标可能相同,事先钦定一个顺序会更好实现。

posted @ 2023-06-26 15:10  xiaoziyao  阅读(116)  评论(0编辑  收藏  举报