做题记录 25.3.14
\(\textcolor{purple}\odot\) CF2021E3 Digital Village (Extreme Version)
考虑优化 CF2021E2 Digital Village (Hard Version) 的动规,发现瓶颈在于转移
令 \(dp_{u,0}\gets sz_ul\),\(dp_{v,0}\gets sz_vl\),可把前两种合并到第三种
可证 \(dp\) 为上凸的,因此保存 \(dp\) 的差分数组,第三种相当于归并,multiset 启发式合并可到 \(O(n\log^2 n)\),使用可并堆可到 \(O(n\log n)\)
\(\textcolor{purple}\odot\) CF2021D Boss, Thirsty
令 \(f_{i,j}\) 表示 \(1\sim i\) 行中第 \(i\) 行左端点为 \(j\) 时的最大总利润,\(g_{i,j}\) 表示 \(1\sim i\) 行中第 \(i\) 行右端点为 \(j\) 时的最大利润
令 \(s_{i,j}=\sum_{k=1}^j a_{i,j}\)
\(f\) 和 \(g\) 的转移相似,以下只考虑 \(f\) 的转移
边界情况为
倒序扫描,维护 \(\max_{j=i}^m s_{1,j}\),容易 \(O(m)\) 计算
对于 \(i>1\),转移为
暴力做总时间复杂度可以到 \(O(\sum nm^2)\),需要优化
其中 \(\max_{r=l+1}^m(s_{i,r}+f_{i-1,r})\) 和 \(\max_{r=l+1}^m s_{i,r}\) 容易 \(O(1)\) 维护,令 \(p_t=\max(f_{i-1,t},g_{i-1,t})\),考虑如何快速计算 \(\max_{r=l+1}^m\left(s_{i,r}+\max_{t=l+1}^{r-1} p_t\right)\)
同样可以 \(O(1)\) 维护
总时间复杂度 \(O(\sum nm)\),空间复杂度可优化到 \(O(\sum m)\)
\(\textcolor{purple}\odot\) CF2013F1 Game in Tree (Easy Version)
显然开始时 \(1\) 到 \(u\) 的链上两方都向中间移动,某时刻一方先离开这条链,之后另一方离开这条链
任意一方离开链之后,其移动步数上限可以确定且可以取到
对于 \(1\) 到 \(u\) 的链上每个点 \(k\),预处理从它离开链之后能走的最大步数 \(f_k\)
然后模拟双方决策,设链上的点为 \(p_{1\sim L}\;(p_1=1)\),目前双方分别在 \(A\) 和 \(B\),\(A<B\)
若 \(f_{p_A}>\max_{A<i\le B} B-i+f_{p_i}\),则 \(A\) 显然会选择向下,此时 \(A\) 必胜;否则 \(A\) 只能继续沿链向下,令 \(A\gets A+1\),若此时 \(A=B\) 则 \(A\) 必败,使用一个 \(\operatorname{ST}\) 表维护链上的区间 \(f_{p_i}-i\) 最大值即可 \(O(1)\) 决策
\(B\) 的情况同理
总时间复杂度 \(O(n\log n)\),瓶颈在于 \(\operatorname{ST}\) 表的建立,若使用 \(O(n)-O(1)\) \(\operatorname{RMQ}\) 则可到 \(O(n)\)
\(\textcolor{purple}\odot\) CF2006D Iris and Adjacent Products
对于给定的集合,最优排列方式一定是: 最大值,最小值,次大值,次小值,······
因此一个集合合法,当且仅当对于任意 \(i\),集合中第 \(i\) 小值乘以第 \(i\) 大值 \(\le k\)
等价于对于任意 \(1\le i\le 1+\lfloor\sqrt k\rfloor\),总数为偶数且 \(< i\) 的数量不小于 \(>\frac ki\) 的数量,或总数为奇数且 \(<i\) 的数量不小于 \(>\frac ki\) 的数量减一
离线询问,枚举 \(i\) 得到答案的下界,每个询问的答案为其所有下界的最大值
预处理每个前缀中 \(<i\) 的和 \(>\frac ki\) 的数量
对于一个区间 \([l,r]\),设其中 \(<i\) 的有 \(c\) 个,\(>\frac ki\) 的有 \(g\) 个,则可以用 \(\lceil\frac {g-c}2\rceil\) 次修改使得 \(c\ge g\),这样无论奇偶都会合法,或者使用 \(\lfloor\frac {r-l+1}2\rfloor-c\) 次操作令 \(c\gets \lfloor\frac {r-l+1}2\rfloor\),\(g\le (r-l+1)-\lfloor\frac {r-l+1}2\rfloor\),当区间长为奇数时补充了前一种情况
时间复杂度 \(O(\sum (n+m)\sqrt k)\),空间复杂度 \(O(\max (n+m))\)
\(\textcolor{blue}\odot\) CF2006C Eri and Expanded Sets
对于一个集合 \(S\),其扩展出的集合满足以下条件
- 最大最小值与 \(S\) 相同
- 排序后形成等差数列
- 公差为 \(\frac g{\operatorname{lowbit}(g)}\),其中 \(g\) 为 \(S\) 从小到大排序后邻项差的 \(\gcd\)
证明:
- 第一条性质显然
- 反证法证明第二条:
- 假设不为等差数列,则存在相邻的 \(x<y<z\),使得 \(x-y\ne y-z\)
- 当 \(2\mid (x-y)\) 时,显然可以进一步拓展,因此 \(2\nmid (x-y)\),同理 \(2\nmid (y-z)\)
- 此时 \(\frac{x+z}2\) 为整数且还没有加入集合,与假设冲突
- 因此假设不成立,必定为等差数列
- 第三条可以转化为两个子命题:公差为奇数,且公差为 \(\frac{g}{2^k},k\in\mathbb N\)
- 前者显然(否则可以继续拓展)
- 对于后者,显然公差为 \(g\) 的因数,而取到其因数后之后只可能除以 \(2\),因此必然为 \(\frac g{2^k}\) 的形式
考虑如何统计
令 \(b_i=|a_i-a_{i+1}|\),则答案为 \(b\) 中区间 \(\gcd\) 等于 \(0\)(即 \(a\) 中对应区间值相同) 或 \(2^k\) 的区间数量加 \(n\)(即 \(a\) 中单个位置)
对于一个给定的左端点,显然 \(=0\) 的右端点为一段以给定左端点开始的区间,\(=2^k\) 的右端点为一段后缀
因此 \(\operatorname{ST}\) 表配合二分即可
时间复杂度 \(O(n\log^2 n)\),可优化到 \(O(n\log n)\)
\(\textcolor{purple}\odot\) AT_agc018_c [AGC018C] Coins
考虑模拟费用流
先建出二分图:左部 \(n=x+y+z\) 点,源点向左部点连容量 \(1\) 费用 \(0\) 的边,右部 \(3\) 点,分别向汇点连容量 \(x,y,z\) 费用 \(0\) 的边,左侧 \(i\) 向右侧第一点连容量 \(1\) 费用 \(a_i\) 的边,向第二点连费用 \(b_i\) 的边,向第三点连费用 \(c_i\) 的边
令 \(u,v,w\) 表示不同的左部点,\(x,y,z\) 表示不同的右部点,则流只有三类:\(S\to u\to x\to T\) 表示匹配 \(u-x\),\(S\to u\to x\to v\to y\to T\) 表示反悔 \(v-x\) 并匹配 \(u=x,v=y\),\(S\to u\to x\to v\to y\to w\to z\) 表示反悔 \(v-x,w-y\) 并匹配 \(u-x,v-y,w-z\)
分别用堆维护即可
时间复杂度 \(O(n\log n)\),常数较大
\(\textcolor{green}\odot\) CF2005E1 Subtangle Game (Easy Version)
\(dp\),令 \(dp_{i,j,k}\) 表示保留矩阵 \((i~n,j~m)\) 和序列 \(a_{k\sim l}\) 先手是否必胜,则 \(dp_{n+1,\ast,\ast}=dp_{\ast,m+1,\ast}=dp_{\ast,\ast,l+1}=0\)
转移为 \(dp_{i,j,k}=dp_{i+1,j,k}|dp_{i,j+1,k}|(dp_{i+1,j+1,k+1}\&b_{i,j}=a_k)\),答案为 \(dp_{1,1,1}\)
时间复杂度 \(O(\sum nml)\)
\(\textcolor{blue}\odot\) CF2005E2 Subtangle Game (Hard Version)
在简单版的基础上用 bitset 优化即可,时间复杂度 \(O(\sum\frac{nml}\omega)\)
存在 \(O(nm)\) 的做法

浙公网安备 33010602011771号