专栏文章

题解:CF2084H Turtle and Nediam 2

CF2084H题解参与者 3已保存评论 2

文章操作

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

当前评论
2 条
当前快照
1 份
快照标识符
@minv3i2k
此快照首次捕获于
2025/12/02 08:50
3 个月前
此快照最后确认于
2025/12/02 08:50
3 个月前
查看原文
感觉比较套路啊,但是为啥又不会做了/ll
0101 串缩成极长连续段,记每段长度为 aia_i,共有 mm 段。操作分为对 ai>1a_i>1aiai1a_i\to a_i-1,或者 1<i<m1<i<mai=ai1=1a_i=a_{i-1}=1,将 ai1a_{i-1} 删除并且将 aia_i 合并到 ai2a_{i-2} 上。发现 ama_m 压根删不掉,并且与前面无关,因此可以只考虑 [1,m1][1,m-1],将 II 的判定换为并非开头,最终答案乘上 ama_m
判定一个序列 bb 能否被操作得到,特判最终全相等的情况。由于最终每个元素都可以看成由一个全集划分的区间操作缩成一个元素,每个区间长度为奇数。对于 bb,要求由最短的前缀生成它。不妨设 bb 对应的 0/10/1 颜色与 ss 开头相同,否则 bb 开头颜色与 ss 不同:可以弹出首位,移位后 a1=1a_1'=1,归约到 bb 开头颜色与 ss 开头的情况。
容易得到这样的 dp:fif_i 表示 [1,i][1,i] 可以生成的 bb 使得恰好以 ii 为结尾,然后枚举 imod2jmod2,i<ji\bmod2 \ne j\bmod 2,i<j,新拼上的区间是 [i+1,j][i+1,j],尝试转移到 fjf_j。此时需要考虑 back(b)=v\text{back}(b)=v 的取值范围,在 jj 时有 lj=maxjmod2=kmod2,kjak+jk2l_j=\max_{j\bmod 2=k\bmod 2,k\leq j}a_k+\frac{j-k}{2}。那么转移到 jj 时,应该有 back(b)(lj2,lj]\text{back}(b)\in(l_{j-2},l_j]。固定 ii,从小到大枚举 jj 并维护 ljl_j 容易做到 O(n2)\mathcal O(n^2) 的复杂度。
注意到在暴力过程中 li=max(li2+1,ai)l_i=\max(l_{i-2}+1,a_i),因此尝试将 max\max 拆了,找到第一次 li2+1l_{i-2}+1aia_i 小的位置 jj,这样就会被取 max\maxfif_i 对后续的转移贡献就与 fj2f_{j-2} 的转移贡献没有区别,可以延后贡献到 jj 合并贡献。令 j=nxtij=nxt_i,那么在 [i+2,nxtj2][i+2,nxt_j-2] 的贡献可以对奇偶分开,动态维护一个差分数组即可。时间复杂度 O(n)\mathcal O(n)

评论

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

正在加载评论...