10.1
wqs 二分,维护 dp 值和取到 dp 值的 k 的区间。倒序记录方案,要满足能落到合法区间中。
10.2
模拟赛 T3。
建子序列自动机,DAG 上 dp 并按字典序出边贪心记录方案。DAG 链剖分。u 向 2fv≥fu 的 v 连边,形成内向树。重边倍增,轻边跳一次 fu 减半。
10.3
拆贡献为跨过 i 时的答案,枚举有 j 个 ≤i。
10.5
从后往前加,维护拓展域并查集。每次合并后,需要能凑出和为 n。拓展域限制 sizi,sizj 只能选一个,维护 ai−bj。bitset 二进制分组,本质不同数 O(n) 级别。复杂度 O(wnn2)。
10.8
u→v 等价与 a 中的出现顺序 u→u+1 先于 u+1→u+2。设 dpi,j 表示前 i 个,第 i 个排名为 j,前缀和维护。
l 最远的合法 r 满足前缀 (
加 ?
减 )
大于 0。限制为 gr≤l≤r≤fl,维护奇偶的区间历史和单点修改线段树扫描线。
10.10
计算已知当前可能为 s 的答案,每次分裂,只用算 k 次。将每个起点的状态压为一个数,复杂度 O(nmk)。
10.11
建生成树的等效链,线段树 t0/1,0/1维护区间 l 和 r 是否与 0 联通。
模拟赛 T3。
ai≤bi 的在 ai>bi 前,ai≤bi 按 ai 升序i,ai>bi 按 bi 降序。ai≤bi 排序后取前 k 个,ai>bi 部分设 dpi,j 表示考虑 [i,n] 取 j 个的最小初始值,有决策单调性,分治合并。
优化后半部分 dp,dpi,j=min(ai+max(fi−1,j−1−bi,0),fi−1,j)。对于 fi−1,j0≥bi,fi−1 下凸,优先队列维护斜率,小于 bi 的部分不会在更新,大于 bi 的部分等价于加入一段斜率为 ai 的线段。
nn 枚举排名,转换为长为 m 的单调递增序列,每个数有上界的方案数。离散化后设 dpi,j 表示第 i 个数在第 j 段,枚举之前最近的不在同一段的是第 k 个数在第 l 段。
10.12
差分约束,把线段缩为单点,要求两点间距离大于 k。将关键点离散化。数据结构模拟 SPFA n 轮。
sp≤sq+⌈kp−q⌉,维护模 k 为下标的 mindisq+kq。syi≤sxi−1+ci。sai−1≤sbi+f(ai,bi),从后往前扫 l,r 处线段树维护 disr−f(l,r)。
见 The 3rd Universal Cup 做题记录 (2)。
10.14
只计算同时出现 1,2,3 的序列。令 1 为全局众数,在同时出现 1,2,3 的子段中 1 都是众数。即维护前缀和与 maxsj−1[sj=2] 和 maxsj−1[sj=2] 的差。
10.15
移动 d 的代价为 ⌊2d⌋(C+4)+(dmod2)(C+3)+x。 额外的代价为跨越的点。对于下标奇偶性相同的终点,对应的起点单调。设 dpi,j 表示前 i 个起点 j 个终点为奇数的最小代价 dp。
按 [JOISC2022] 洒水器 的方式将距离为 r 拆成 u 子树内离 u 为 r。其余部分正常线段树打 tag,维护 r+1 个 tag,表示离区间最小深度差 i 的点要加这个 tag,还有一个 tag 维护子树加,对整个区间作用。
10.16
按 bi 降序做。按 bi 升序排序,设 dpi,j 表示前 i 人做 j 个,dpi,j=max(dpi−1,j−1,bi)+ai。下凸,维护斜率,基本同上面那道。
10.17
平面图最短路转最小割。在流了最短路的基础上,加入流量 +∞ 代价为 1 的边,加入超级源点向源点连流量为 k 的边,跑费用流。
树状数组维护左右端点的 ∑cnti 和 ∑cnti×i。线段拍到猫树上,优先队列和并查集维护,每次向中间合并或把一个线段推到下一层。复杂度 O(nlog2n)。
10.29
记使得 gx≡n(modmod) 的最小非负 x 为 logn,有 logab=loga+logb。
令 n=mod+1,预处理 n 以内的 logx。线性筛,只需要 bsgs 求出 n 以内 lnnn 个质数的 logp,就可以 O(n) 求出 n 以内所有 logx。哈希表,预处理时 B 次插入,lnnn 次 Bmod 的查询,取 B=lnnn×mod。
查询 loga 时,如果 a≤mod+1 直接得出,否则有 b×a+c=mod,b≤mod。loga=logb−c=log(c×−1)−logb=log(mod−1)+logc−logb。又应为有 (b+1)×a+c=mod+a,loga=logb+1a−c=log(a−c)−log(b+1)。logb 或 log(b+1) 已知,log(mod−1) 提前算,min(c,a−c)≤2a,选 c 和 a−c 较小的一边递归可以做到 logmod 查询。
复杂度 O(log21modmod43+qlogmod)。