记录:2025-1-5 讲题

· · 算法·理论

linxudong

题目:CF2013E Prefix GCD

贪心。由引理及放缩,可以推出第一位可以选出最小值 minx

引理:a<b,则 a+\gcd(a,b)\le b

接下来的有效结果为 \gcd(a_i,minx)

推广,同理可得,每次应该选取与当前值 \gcd 最小的数字作为下一个数字。容易得出结论。

## [_biLang_](https://www.luogu.com.cn/user/1124929) 题目:[P3731 [HAOI2017] 新型城市化](https://www.luogu.com.cn/problem/P3731) 因为团不超过两个,所以原图是二分图。 在补图上最大团等于最大独立集。为了找到一条边连接使得最大团大小增加,问题转化为删掉一条边使得最大独立集增加,即最大匹配减少。 手模样例,先跑一遍网络流求最大匹配,不难发现: **假若一条匹配在残量网络流上的一个环中,那么它就是可以被代替的(即在一个强连通分量之中)**。对残量网络进行缩点,两个端点不在同一个强连通分量中的匹配边可以作为答案。 ## [s_mayunfeng](https://www.luogu.com.cn/user/216347) 题目:[P4830 选择题](https://www.luogu.com.cn/problem/P4830) 题意简述:有 $N$ 个选项,最开始随机蒙,会进行 $N-2$ 次删除操作,必须在其中 $K$ 次删除操作后更换自己选择的答案,求最优策略下选到正确答案的概率。对 $10^9+7$ 取模。$1\le K,N\le10^5$。 最特殊地,$K=0$ 时,$P=\dfrac1n$。 特殊地,$K=1$ 时,$P=\dfrac{n-1}n$。 推广到 $K\in[2,n]$,不妨钦定是否选中正解的最后一次更换。设最后一次更换时包括当前选择的选项共有 $x$ 个选项,前 $K-1$ 次更换获得错解的概率为 $P$,那么更换后选到正确答案的概率是 $\dfrac{P}{x-1}$。当 $P$ 确定时,$x$ 与概率负相关。所以最后一次更换在最后一次删除后,得到的概率 $P$ 最高。 类似地,设第 $i(i\ge2)$ 次更换时剩下 $x$ 个选项,前 $i-1$ 次更换获得错解的概率为 $C$,那么当前选到错误答案的概率是 $C\times \dfrac{x-2}{x-1} + ( 1-C ) = 1-\dfrac{C}{x-1}$。当 $C$ 确定时,$x$ 与获得错解的概率正相关。 所以最优策略为:在前 $K-1$ 次删除错解后更换,第 $K$ 次更换放在最后一次删除错解之后。利用上述式子可以将概率算出来。 ## [Chenhaoxuan](https://www.luogu.com.cn/user/493766) 题目:[CF1976D Invertible Bracket Sequences](https://www.luogu.com.cn/problem/CF1976D) 枚举左端点 $l$,并对区间 $[l,n]$ 的范围进行区间翻转。 > 补充:合法括号串的第二定义: > > - 将 `(` 视作 $1$,`)` 视作 $-1$,则整个序列的和为 $0$。 > > - 原串的任意一个前缀串的和 $\ge 0$。 所以,我们用线段树维护区间最小前缀。一个位置上的点能作为答案,当且仅当以之为前缀的串和与以 $l$ 为前缀的串和相等,且任意一个区间前缀 $\ge0$。这等价于区间最小前缀 $\ge0$。容易发现具有单调性。 具体地,使用 $\log n$ 实现区间翻转,然后可以在线段树上二分,或者二分后在线段树上查询,时间复杂度 $O(n\log n)$ 或 $O(n\log^2 n)$。 当然还有线性做法,见第一篇题解。 ## [chuazen](https://www.luogu.com.cn/user/821073) 题目:[P5905 【模板】全源最短路(Johnson)](https://www.luogu.com.cn/problem/P5905) 题意:求全源最短路。$n\le3000,m\le6000$。 Floyd / Bellman_Fold / Spfa 太慢,dijkstra 无法处理负权边。 我们可以先用 Bellman_Fold 判负环,然后采用对边权的一定的改变,使得边权为正,然后 $n$ 轮 dijkstra 求解。直接对每条边加上一个数字的做法显然是错误的。 我们新建一个虚拟节点 $0$。从这个点向其他所有点连一条边权为 $0$ 的边。 接下来用 Bellman-Ford 算法求出从 $0$ 号点到其他所有点的最短路,记为 $dis_i$。 假如存在一条从 $u\to v$,边权为 $w$ 的边,则我们将该边的边权重新设置为 $dis_u-dis_v+w$。 > 证明:见第一篇题解,采用势能分析法可以证明边权与原图是相对等价的;使用三角形不等式证明不存在负权边。 接下来以每个点为起点,跑 $n$ 轮 Dijkstra 算法即可求出任意两点间的最短路了。令转换后 $u,v$ 间的最短路长度为 $Dis(u,v)$,则答案的 $ans(u,v)=Dis(u,v)-dis_u+dis_v

时间复杂度是 O(nm\log m)

寒假讲课安排

LG name 上课内容 上课时间
MengShang 虚树 1.17
chuazen 树链剖分 1.19
linxudong LCT 1.20
s_mayunfeng (ex)KMP 1.21
biLang 数学,数论 2.7
Chenhaoxuan 二分图相关 2.8
youkasgs_wyb 构造 2.9
chuazen KDT 2.10
MengShang 后缀自动机 2.11