专栏文章

题解:P13540 [IOI 2025] 羊驼的坎坷之旅(obstacles)

P13540题解参与者 2已保存评论 1

文章操作

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

当前评论
1 条
当前快照
1 份
快照标识符
@mioizlni
此快照首次捕获于
2025/12/02 19:59
3 个月前
此快照最后确认于
2025/12/02 19:59
3 个月前
查看原文
比较答辩但是很人类的做法!!
注意到起点终点都在第一行,这个看上去很有性质。我们猜测路径一定形如一堆 (0,a)(x,a)(x,b)(0,b)(0,a)\to(x,a)\to(x,b)\to(0,b)。设一列中第一个空的位置是 fiifi_i,前缀连续空的长度是 cnicn_iaba\to b 之间的 maxH\max H 位置为 cc,那能这么走就相当于 ficmin(cna,cnb)fi_c\le\min(cn_a,cn_b)
这启发我们建出 HH 的笛卡尔树。如果我们现在在一个子树 xx,如果我们能到达 fixfi_x,那去子树内 cncn 最大的点肯定是不劣的,然后如果 maxcnfifax\max cn\ge fi_{fa_x} 那就可以走到 xx 的父亲,询问的时候只要看能跳到最高的位置是否相等即可。倍增做就可以获得 8383 分。
对于最后一个 subtask,我们考虑区间笛卡尔树:先一直倍增到子树包含了端点,此时当前节点 xx 一定是 [l,x][l,x] 或者 [x,r][x,r]max\max。如果两者都是那 xx 就是根;如果 xx[l,x][l,x]max\max 那父亲一定是 Rx=miny>xHy>HxR_x=\min\limits_{y>x}H_y>H_x,左儿子是 [l,x1][l,x-1],右儿子就是在笛卡尔树上的右儿子。如果右儿子的 maxcn\max cn 已经满足要求那直接跳就行,否则需要 lmaxi<x,cnifiRxil \le\max\limits_{i<x,cn_i\ge fi_{R_x}}i,倍增跳 RR 的时候维护所有点这个 maxi\max imin\min 即可。xx[x,r][x,r]max\max 的情况就是反过来。
时间复杂度 O(n+mlognm+qlogm)O(n+m\log nm+q\log m)code

评论

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

正在加载评论...