做题记录 25.8.26

· · 个人记录

\purple\odot LOJ #4261. 「KTSC 2024 R2」跳跃游戏 \quad P11239 [KTSC 2024 R2] 跳跃游戏

显然可以转化为 a_{0\sim n-1} 中选择若干个数满足任意两个选择的位置之间距离不小于 k,最大化选出的数的和

f_i 表示 a_{0\sim i} 的答案,则转移为 f_i=\max f_{0\sim i-k}+a_i

考虑每次处理一段,从 f_{uk-k}\sim f_{uk-1} 转移到 f_{uk}\sim f_{uk+k-1},令 pmxf_{0\sim uk-k-1} 中的最大值

初始 pmx=0u=0,令 p_i=f_{uk-k+i}c_i=f_{uk+i}a_i 为原本的 a_{uk+i},则 p_{0\sim k-1}\gets -\infty

则转移为

c_i=\max(pmx,p_{0\sim i})+a_i

假定 p_{-1}=pmx 则化为

c_i=\max(p_{-1\sim i})+a_i

考虑当前范围中存在一次 a 区间加的左端点 l,下一个左端点为 l_2,则可证 a_{l\sim l_2-1} 中只需要保存 a_l(若 l=l_2 则忽略,即去重左端点)

扫描一遍当前区间内的端点得到 a 极长等值段,从而将 +a_i 转化为若干区间加,在所有区间加之前更新 c_i=\max (p_{-1\sim i}),以上操作容易线段树维护

这样时间复杂度为 O(q\log q+\frac nk)

若存在连续若干段中的 a 都相同,则可以转化为 p_{-1}p_{0\sim k-1} 的修改

这样时间复杂度为 O(q\log q)

LOJ \quad luogu

参考

\purple\odot LOJ #4257. 「KTSC 2024 R1」水果游戏 \quad P11236 [KTSC 2024 R1] 水果游戏

考虑对于一个确定的序列 a_{1\sim n} 如何求解

a 中极长等值区间缩为一个二元组 (v,c) 表示有 cv

考虑连续三个 (v_1,c_1),(v_2,c_2),(v_3,c_3),满足 v_1>v_2<v_3,则 v_1v_3 要并起来 v_2 必须和并至 \min(v_1,v_3)

d=\min(v_1,v_3)-v_2,则 2^dv_2 可以合并出一个 \min(v_1,v_3)

2^d\mid c_2 则直接将 (v_2,c_2) 替换为 \left(\min(v_1,v_3),\frac{c_2}{2^d}\right)

否则 v_1v_3 无法合并,将序列从 (v_2,c_2) 处断开,左右分别放回一个 \left(\min(v_1,v_3),\left\lfloor\frac{c_2}{2^d}\right\rfloor\right)

经过若干次以上操作,剩下的每一段都是严格单峰的,长度为 O(V)(令 V=\max a=10

(+\infty,\ge 1) 表示断点,起点,终点,继续消去谷,同时在消去 (v_2,c_2) 时将 v_2+\left\lfloor\log_2 c_2\right\rfloor 计入答案,则最终得到一个 (+\infty,\ge 1) 且在合并过程中得到答案

用线段树维护每个区间内的二元组序列,则时间复杂度为 O(Vn\log n),空间复杂度 O(Vn)

LOJ \quad luogu

参考

\blue\odot P3554 [POI 2013] LUK-Triumphal arch

显然回到父亲不优

二分答案,转化为判定取 k 时是否满足要求

f_u 表示 u 已经染黑的情况下,在进入子树 u 之前最少需要染黑的点的数量,使得进入子树 u 后合法

显然转移为 f_u=\max(0,\sum_{v\in son(u)}(f_v+1)-k)

f_1=0 则当前 k 合法

时间复杂度 O(n\log n)

代码

\blue\odot CF1559D2 Mocha and Diana (Hard Version)

显然答案的上限为 AB 中连通块数量的较小值减一,以下通过构造证明能取道这一上界

先枚举 2\le i\le n,若 AB1i 都不连通,则选择边 (1,i),并在 AB 中都将 1i 合并,显然这部分选边一定合法

LA 中不与 1 连通的点的集合,RB 中不与 1 连通的点的集合(将 i 加入 L 后需要合并 1,i 再继续查找,即每个连通块只能选择至多一个点,R 同理,显然 L\cap R=\mathbb\emptyset

LR 中分别选择 \min(|L|,|R|) 个,然后依次匹配即可

显然合法(选择 (u,v)\mid u\in L,v\in R 时,Au1 不连通但 B 中连通,v 中同理,显然满足要求)且数量达到上界

时间复杂度 O((n+m_1+m_2)\alpha(n))

代码

参考