4.7
设 dpi 为从 (1,1) 到 (2,i) 的最小代价。答案为 maxdpi+s3n−s3i−1。
dpi=max(lx≤imaxdplx−1+s2i−s2lx−1−wx,lx≤j≤imaxs1j+s2i−s2j−1−wx)
前面线段树维护 dp 值,按转移顺序区间 max,单点查。后面从后往前枚举 i,不断加入区间,维护 maxx≤ya(x)+b(y)。另一个线段树分别维护 maxa,maxb,maxv。
不合法情况要么完全包含要么不交,建立树形结构。按 ki 大小从小到大排序。实时记录每个爱好 j 对应的最后的人 fj。枚举 i 的每个爱好 j,如果最后不合法意味着每个 fj 的爱好都被 i 完全包含,否则找到一组解。如果最后不合法,所有 fj 的爱好数之和为 ki。
4.16
对于 i<j,如果 pi>p_j$ ,无论顺序逆序对贡献为 1;否则一个逆序对贡献为 2,顺序对贡献为 0。构造一些位置上的逆序对数为 2k−inv(p) 。
有决策单调性,主席树上二分。
4.18
枚举前 i−1 位相同,pi=x 且 qi=y。逆序对数的差异只与后 n−i−1 的排列有关。dpi,j 表示 i 个数有 j 个逆序对。
ans=i=0∑n−1Anix=1∑n−i−1y=x+1∑n−i−1j=0∑n2k=0∑j+x−y−1dpn−i−1,j×dpn−i−1,k
记 fj=∑dpk。
ans=i=0∑n−1Anij=0∑n2dpn−i−1,jx=1∑n−i−1y=x+1∑n−i−1fj+x−y−1
记 gj=∑fk。
ans=i=0∑n−1Anij=0∑n2dpn−i−1,j×(gj−2×(n−i−1)−x=1∑n−i−1gj+x−n+i−2)
记 hj=∑gk。
ans=i=0∑n−1Anij=0∑n2dpn−i−1,j×(gj−2×(n−i−1)−hj−2+hj−n+i−2)
最直接的就是并查集倍增将两段区间并起来。
可以用类似马拉车的思路得到一个贪心算法。枚举 i,用 bani,j 记录 i 不能是 j,维护 r 表示当前已知 b1⋯br。如果 i+ai≥r 就把 r 更新到 i+ai,否则什么也不做。最后在 hash 判断所有 ai 是不是都满足条件。
4.19
线段树套 FHQ,查询排名为 k 时二分再查询 mid 的排名,复杂度 O(nlog3n)。
权值线段树套 FHQ,FHQ 维护位置,查询排名为 k 时线段树上二分,复杂度 O(nlog2n)。
拓扑排序转移。当当前是环是拆开 c 最大的边。
按 dfn 序,前缀线性基或合并前后缀线性基。
观察到:只能选偶数个,且当 n=4k+2,k>0 时不能全选。
线性基选偶数个数:插入 ai⊕a1。
4.23
猫树分治,维护 [l,mid] 的前缀线性基和 (mid+1,r] 的后缀线性基。在 [ql,qr] 跨越 mid 时合并。复杂度 O(nlog2n)。
维护差分数组。区间 al,⋯,r 的线性基等价于 al 和 bl+1,⋯,r 的线性基。
dpi,j→dpk,l。对 i,j 往后的转移按平均值从小到大,一边前缀和一边双指针。
4.25
如果删去边 (u,v) 后 u 到 v 的路径依然存在,那就删去。bitset 维护可达性。
先找出最小生成树,线段树分治其他的边,套上线性基维护每个环的最大异或值,见 [WC2011] 最大XOR和路径。
P3733 加强。不一定存在一直存在的生成树。线段树分治。记录每个点的父亲和到父亲的边权。对边 (u,v),如果 u,v 在同一个联通块,加入线性基;否则 fd(u) 和 fd(v) 连 w⊕dis(u,fd(u))⊕dis(v,fd(v))。
4.26
连二选一的两个点,最多允许存在基环树,求最大生成基环树。
每个点拆为 ai,bi ,最小割,s→ai 表示 i∈A,否则 i∈/A;s→bi 表示 i∈B,否则 i∈/B。00 或 11 表示 i\inC。
每个数维护 li,0/1,ri,0/1 表示左右第一个、第二个大于 ai 的位置。分类讨论 p=l,r 或 l<p<r。
4.28
线段树维护区间未封个数,未封之和,封了的和,封的次数。封过的区间不参与上传下放,解封时从下面上传。
4.30
$dp_{i,j,k,l} 的答案,复杂度 O(n5)。
注意到答案小于 lognm。交换维度。dpans,i,j,l 表示答案为 ans,(i,j) 到 (dpans,i,j,l,l) 最大。
dpans,i,j,l=max(dpans−1,i,j,l,dpans−1,dpans−1,i,j,l+1,j,l,max(min(dpans−1,i,j,k,dpans−1,i,k+1,l)))
k 维有单调性,双指针。
结论:一个点存在两个叶子则必胜。
只与和中间点的距离有关,2n 个 sg 值亦或起来。
发现 sg 值不大,记 nxtj,i 为 i 的后继有 sg 值为 j 的。预处理素数,bitset 转移。