专栏文章

P8339题解

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

文章操作

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

当前评论
0 条
当前快照
1 份
快照标识符
@mioj1ybc
此快照首次捕获于
2025/12/02 20:01
3 个月前
此快照最后确认于
2025/12/02 20:01
3 个月前
查看原文
由于每种颜色的钥匙至多有5把,我们可以提前找出能匹配的钥匙和箱子对,这里的能匹配是指如果一个箱子和一把钥匙之间还有一把未配对的钥匙,则让箱子和中间的那把钥匙配对,因为若按原来的匹配,能包含这个匹配的查询一定能包含新的匹配。求出所有匹配的过程类似处理树上括号序列,但是对于每种颜色的每把钥匙,直接在原树上跑会超时,可以把同种颜色的点作为关键点建立虚树,在虚树上处理即可保证复杂度。 对于一把钥匙 kk 和一个箱子 bb ,它们能够匹配,考虑哪些查询 (s,t)(s,t) 能包含这个匹配,有三种情况:
  1. kkbb 没有祖孙关系。只要满足 sskk 的子树中且 ttbb 的子树中即可。
  2. kkbb 的祖先。设 nxtnxtkkbb 的这条链上 kk 的儿子节点,要满足 ttbb 的子树中且 ss 不在 nxtnxt 的子树中。
  3. bbkk 的祖先。同理。
一棵子树内的点的dfs序是连续的,把 ss 作为横坐标 , tt 作为纵坐标,那么每一个匹配就对应一个或两个二维平面上的矩形,每一个查询相当于平面上的一个点,问这个点被多少个矩形包含,用扫描线维护即可。

评论

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

正在加载评论...