做题记录 26.1.27
\(\textcolor{black}\odot\) P2305 [NOI2014] 购票
转移方程是显然的,等价于根到当前点的直链的一段后缀上查询一次函数最值
预处理出栈序,则这段后缀等价于出栈序在直链两段的点之间且已经 \(\text{dfs}\) 过的全体点,问题转化为线段树每个结点保存一个一次函数,查询区间内一次函数在一点的最值,线段树套李超树即可
时间复杂度 \(O(n\log n\log V)\),空间复杂度 \(O(n\log n)\)(注意插入李超树不要递归到叶子)
\(\textcolor{black}\odot\) AT_agc040_e [AGC040E] Prefix Suffix Addition
假定所有操作一之和为 \(b\),操作二之和为 \(c\),满足 \(\forall 0\le i\le n,b_i+c_i=a_i\),则操作次数为 \(\sum_{i=0}^n([b_i>b_{i+1}]+[c_i<c_{i+1}])\)
令 \(dp_{i,j}\) 表示确定了 \(b_{0\sim i}\),满足 \(b_i=j\) 时的最小总操作次数,则
令 \(a_{n+1}=0\),答案为 \(\min dp_{n+1,\ast}\)
显然 \(dp_{i,\ast}\) 单调(假定第二维在 \([0,a_i]\) 中),且极差不超过 \(2\)
因此可以将 \(dp_{i,\ast}\) 划分为三段,容易做到 \(O(n)\)
\(\textcolor{black}\odot\) AT_agc049_e [AGC049E] Increment Decrement
对于固定的 \(a_{1\sim n}\),考虑如何求出最小操作次数
令 \(dp_{i,j}\) 表示 \(a_{1\sim i}\) 中 \(a_i\) 被 \(j\) 次区间操作覆盖
显然初始 \(dp_{0,i}=c\times i\),答案为 \(\min_j dp_{n,j}\),转移为
显然可以用 \(\text{slope trick}\),\(dp_{i,\ast}\) 是凸的,斜率在 \([-1,c+1]\) 范围内
初始转折点为 \(c\) 个 \(0\),对 \(a_i\) 转移时,令斜率为 \(-1\) 的部分斜率变为 \(0\),斜率 \(c+1\) 的部分斜率变为 \(c\),然后向转折点集合中加入两个 \(a_i\),设操作后转折点集合的最小值为 \(p\)(即斜率等于 \(0\) 的段的左端点),则这一次操作对最小值的增量为 \(a_i-p\)(显然 \(p\le a_i\))
令 \(S\) 为转折点的可重集,初始 \(S\) 为 \(c\) 个 \(0\),\(i=1\) 时加入 \(2\) 个 \(a_1\) 并令贡献加上 \(a_1-p\),\(i\ge 2\) 时去掉 \(S\) 最小值最大值后加入两个 \(a_i\) 并令贡献加上 \(a_i-p\)
然后考虑题目的问题
先将 \(k^{n-1}\sum_i \sum_j b_{i,j}\) 计入答案,然后枚举 \(p\in \{b_{i,j}\}\),考虑统计出 \(p\) 作为 \(\min S\) 的出现次数 \(c\),然后答案减去 \(c\times p\)
差分为计算 \(\min S<p\) 的次数和 \(\min S<p+1\) 的出现次数,显然形式相同,只考虑前者
令 \(b_{i,j}\) 中 \(<p\) 的为 \(0\),\(\ge p\) 的为 \(1\),则任意时刻 \(S\) 的状态可以由 \(1\) 的数量描述,最终 \(\min S<p\) 当且仅当 \(0\in S'\)
令 \(ct_i\) 表示 \(b_{i,\ast}\) 中 \(1\) 的数量,令 \(dp_{i,j}\) 表示第 \(i\) 次操作后 \(S\) 中 \(1\) 的数量为 \(j\) 的方案数
初始 \(dp_{1,0}=k-ct_1,dp_{1,2}=ct_1\)
\(dp_{i,j}\) 向后转移时,令 \(j'=j-[j>0]-[j=c+2]\) 表示去除 \(\min\) 和 \(\max\),转移为
方案数为 \(\sum_{i=1}^n dp_{i,c+2}\times k^{n-i}\)
容易做到 \(O(n^2k^2)\)
\(\textcolor{blue}\odot\) P3188 [HNOI2007] 梦幻岛宝珠
每组 \((a,b)\) 放到 \(b\) 位置上,令 \(dp_{i,j}\) 表示忽略 \(2^i\) 以下的重量,目前选择了 \(j\times 2^i\) 的最大价值,转移是容易的
时间复杂度 \(O(TV^2\log V)\)
\(\textcolor{black}\odot\) CF1290F Making Shapes
等价于求 \(c_{1\sim n}\) 的数量满足 \(c_i\in \N\),\(\sum_i c_i x_i=0\),\(\sum_i c_i y_i=0\),\(\sum_i[x_i>0]c_ix_i\le m\),\(\sum_i[y_i>0]c_iy_i\le m\)
令 \(dp_{d,x_1,x_2,y_1,y_2,f_1,f_2}\) 表示确定了 \(\sum_i[x_i>0]c_ix_i\),\(-\sum_i[x_i<0]c_ix_i\),\(\sum_i[y_i>0]c_iy_i\),\(-\sum_i[y_i<0]c_iy_i\) 的低 \(d\) 位,它们 \(d\) 位到 \(d+1\) 位的进位分别为 \(x_1,x_2,y_1,y_2\),其中前两项低 \(d\) 位相同,\(f_1\) 表示是否超过 \(m\) 的低 \(d\) 位,后两项低 \(d\) 位相同,\(f_2\) 表示是否超过 \(m\) 的低 \(d\) 位
转移时 \(O(2^n)\) 枚举 \(d+1\) 位上 \(c_i\) 的状态,容易 \(O(1)\) 转移
总时间复杂度 \(O((nV)^42^n\log m)\),其中 \(V=|x_i|\)
\(\textcolor{purple}\odot\) P12479 [集训队互测 2024] 长野原龙势流星群 \(\quad\) QOJ #9532. 长野原龙势流星群
初始每个点为一个连通块,每次选择平均值最大的一个连通块与其父亲合并,过程中维护每个结点作为根时连通块平均值的最大值
时间复杂度 \(O(n\log n)\)
\(\textcolor{black}\odot\) AT_agc072_c [AGC072C] Human Exercise
考虑求出前 \(k-1\) 次行走后每个格子经过次数,则最后一次的结果容易模拟得到
显然由副对角线互为镜像的两个格子(\((x,y)\) 和 \((n-y+1,n-x+1)\))经过次数相同,因此只考虑左上部分
显然 \((1,1)\) 经过次数为 \(k-1\),可证经过 \((i,j)\) 的每条路径,下一步以 \(i+j\) 为周期,每个周期前 \(i\) 步走到 \((i+1,j)\),后 \(j\) 步走到 \((i,j+1)\)
容易做到 \(O(n^2)\)

浙公网安备 33010602011771号