专栏文章

题解:P4477 [BJWC2018] 基础匹配算法练习题

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

文章操作

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

当前评论
0 条
当前快照
1 份
快照标识符
@mipir1f3
此快照首次捕获于
2025/12/03 12:40
3 个月前
此快照最后确认于
2025/12/03 12:40
3 个月前
查看原文
只有询问无修改,于是考虑莫队维护 bib_i
容易发现对于每个 bib_i,它可以匹配的 aia_i 总是一个从 11 开始的连续区间。采用贪心的思想,我们对于每个 bib_i,我们尽量选择最大的那个 aia_i,称其为它的「最佳位置」。
对于这种连续区间,我们考虑使用线段树维护之。维护三个信息:
  • 答案 ansans
  • aia_i 区间大小 asizasiz
  • 匹配成功的 bib_i 区间大小 bsizbsiz
具体而言:
  • 增加:尽可能地向右子树寻找 aia_i 以使得 aia_i 最大化,若最后匹配得了且是「最佳位置」,那么令 ans+1ans+1bsiz+1bsiz+1
  • 删除:最后若 bib_i 先前有匹配,则令 ans1ans-1bsiz1bsiz-1
pushup 时:
  • bsizbsiz 可以直接加;
  • ansans 不仅要加上左右子树,还有可能右子树闲置的 bib_i 与左子树闲置的 aia_i 进行匹配。
综上,本题是莫队与线段树的结合,其中莫队为整体框架,线段树处理寻找匹配与计算贡献的问题,并且让我们学会了只有询问考虑莫队、以及连续区间问题考虑线段树的技巧。时间复杂度 O(Qmlogn)O(Q \sqrt{m} \log n)代码,需要快读。

评论

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

正在加载评论...