专栏文章

题解:AT_arc150_f [ARC150F] Constant Sum Subsequence

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

文章操作

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

当前评论
0 条
当前快照
1 份
快照标识符
@mio3b5ua
此快照首次捕获于
2025/12/02 12:40
3 个月前
此快照最后确认于
2025/12/02 12:40
3 个月前
查看原文

[ARC150F] Constant Sum Subsequence

神奇分治题。
fif_i 表示任意总和为 ii 的序列都被表达出来的所需要的最短前缀是多少,设 nxti,jnxt_{i,j} 表示第 ii 个位置后面第一个为 jj 在那个位置,有转移:
fi=maxj nxtfj,ijf_i=\max_{j}\ nxt_{f_j,i-j}
这个转移看上去就很鬼畜,不太好优化,考虑分治。
对于一个区间 [l,r][l,r],我们考虑 [l,mid][l,mid] 中的数对 [mid+1,r][mid+1,r] 中的数的贡献,但受限于这个需要记录两个东西的 nxtnxt,我们还是不好做。
注意到分治过程中区间长度的总和是 O(nlogn)\operatorname{O}(n\log n),而转移中 nxtnxt 的第二维在分治过程中每一次只有区间长度种,所以可以考虑枚举第二维。
接下来考虑找一些性质。
结论 11: 对于所有的 x,y,kx,y,k 满足 x<yx<y,如果 nxtx,knxty,knxt_{x,k}\neq nxt_{y,k},那么一定有 nxtx,kynxt_{x,k}\le y
证明:
首先 nxtx,knxt_{x,k} 一定是小于 nxty,knxt_{y,k} 的,而如果存在 y<nxtx,knxty,ky< nxt_{x,k}\le nxt_{y,k},就代表第 nxtx,knxt_{x,k} 个位置的值是 kk,那么 nxty,knxt_{y,k} 就会是 nxtx,knxt_{x,k},违背了最初的条件。
结论 22:如果 lxmid, nxtfx,knxtfmid,kl\le x\le mid,\ nxt_{f_x,k}\neq nxt_{f_{mid},k},那么我们不需要考虑 fxf_xmid+1rmid+1\sim r 中的 ff 值的影响。
证明:
首先 ff 是有单调性的,所以 fxfmidf_x\le f_{mid}
根据结论 11 我们可以得到 nxtfx,kfmidnxt_{f_x,k}\le f_{mid},而根据定义对于任意的 kknxtfmid,k>fmidnxt_{f_{mid},k}>f_{mid},所以说 fxf_x 在这种情况下一定不如 fmidf_{mid}
考虑对于一个 kk 有哪些 xx 是必要的。由于 nxtx,knxtx+1,knxt_{x,k}\le nxt_{x+1,k},所以实际上是有一段区间会对后面进行转移。我们可以找到 fmidf_{mid} 前面的第一个 kk 在哪里,设为 pp,那么对于 fx>pf_x>pxx 都是有意义的。
于是我们要做的事情就变成了每次对一个区间取 max\max,用线段树维护即可,时间复杂度 O(nlogn+slog2s)\operatorname{O}(n\log n+s\log^2 s)

评论

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

正在加载评论...