专栏文章

题解:P2418 yyy loves OI IV

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

文章操作

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

当前评论
0 条
当前快照
1 份
快照标识符
@minu3aqy
此快照首次捕获于
2025/12/02 08:22
3 个月前
此快照最后确认于
2025/12/02 08:22
3 个月前
查看原文
sumisum_i[1,i][1,i] 中 膜拜 yyy 和 c01 的人数的差。
fif_i 为 考虑到第 ii 个人时所需最少的宿舍数量。
易得 O(n2)O(n^2) 递推式为 fi=minsumisumj1m  sumisumj1=ij+1fj+1f_i=\min\limits_{\lvert sum_i-sum_{j-1} \rvert \le m~\vee~sum_i-sum_{j-1}=i-j+1} f_j+1
现在考虑优化,首先注意到条件 sumisumj1m\lvert sum_i-sum_{j-1} \rvert \le m,容易想到这是两个在数轴上的点的距离小于等于 mm(初一知识)。
这时如果我们想有没有一种数据结构能统计数轴上 j[xm,x+m]j\in[x-m,x+m]maxfj\max f_j,就容易想到值域线段树了。
所以我们只需在 sumisum_i 点进行单点修改,然后区间查询 [sumim,sumi+m][sum_i-m,sum_i+m] 中的最大值然后更新 dp 就行了。
所以代码自己写。

评论

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

正在加载评论...