专栏文章

题解:CF2162H Beautiful Problem

CF2162H题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@min3y5mz
此快照首次捕获于
2025/12/01 20:10
3 个月前
此快照最后确认于
2025/12/01 20:10
3 个月前
查看原文
一个自认为简单不少的做法。
以下分别记 low,eq,high{\rm low,eq,high}<x,=x,>x<x,=x,>x 的数。
首先,f(a,x,l,r)f(a,x,l,r) 的限制等价为「al,al+1,,ara_l,a_{l+1},\dotsc,a_r 中不能有 low{\rm low}high{\rm high} 其一」。
LkL_k 表示覆盖 ii 的区间中,左端点离 ii 最远有多远,形式化地,Lk=imini[l,r]lL_k=i-\min_{i\in[l,r]} l。如果 ii 不被任何区间覆盖,设 Li=0L_i=0RiR_i 类似定义为右端点最远的距离。则如果将 aia_i 填入 low{\rm low},那么 [iLi,i+Ri][i-L_i,i+R_i] 中都不能有 high{\rm high} 了。
eq{\rm eq} 比较万能,不受限制影响。如果 eq{\rm eq} 比较多其实是没什么影响的,但是如果数量不够可能就寄了。
我们设状态 fi,jf_{i,j} 表示现在已经填完 a1,a2,,aia_1,a_2,\dotsc,a_iaia_i 填的是 low{\rm low},总共填了 jjlow{\rm low} 时最少需要多少个 eq{\rm eq} 才不会爆。
经典地,容易说明若 i<ji<j,则 iLijLji-L_i\leq j-L_ji+Rij+Rji+R_i\leq j+R_j。这说明,一个 low{\rm low} 带来的限制不会跨过另一个 low{\rm low} 去管辖远方的位置。
所以我们可以暴力转移,直接枚举上一个 low{\rm low} 填在哪了,设为 kk。中间必须填 eq{\rm eq} 的位置共有 min(ik1,Rk+Li)\min(i-k-1,R_k+L_i) 个,其它的都可以填入 high{\rm high}
故,转移方程如下:
fi,jk<ifk,j1+min(Rk+Li,ik1)f_{i,j}\operatornamewithlimits{\longleftarrow}_{k<i} f_{k,j-1}+\min(R_k+L_i,i-k-1)
初始 f0,0=1f_{0,0}=1
再记 gjg_{j} 表示 low{\rm low}jj 个时 eq{\rm eq} 最少需要多少个。可以 gjfi,j+Rig_j\gets f_{i,j}+R_i 得到。判断一个 xx 是否合法时,直接算出 low{\rm low}eq{\rm eq} 的数量查表即可。
现在 ff 的计算是 O(n3)O(n^3),可以使用手法优化一下。我们分讨转移时取到了 min\min 中的哪一项。对于一个确定的 ii,存在一个分界点,使得分界点之前的 kk 取到第一项,分界点后取到第二项,且分界点本身关于 ii 也是单增的。取到第二项的可以单调队列维护,第一项直接维护不在单调队列里的最优决策点即可。
直接实现复杂度 O(n2+mlogm)O(n^2+m\log m)。如果喜欢赤石可以卡到时间 O(nm)O(nm),空间 O(n+m)O(n+m)
Submission,实现的时候在梦游,空间写的是 O(n2)O(n^2)

评论

0 条评论,欢迎与作者交流。

正在加载评论...