专栏文章
24.12.20
个人记录参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miqq2q7e
- 此快照首次捕获于
- 2025/12/04 08:53 3 个月前
- 此快照最后确认于
- 2025/12/04 08:53 3 个月前
CF1930H
概述:交互库给你一棵树,你需要在所有询问开始前给交互库两个排列 ,随后交互库每次生成一个排列 与两个点 ,要让你求树上 路径间 的 ,你可以询问 次两个排列上的区间最小值。。
解法:对于排列,显然有 ,因此我们可以将原问题转为询问路径补集的 。路径补集刻画为比 的 还小的点,比 还大的点,以及路径上所有点左右挂着的点。
先让 为原 序,对上述两种点询问,发现第二种点包括了 链上的挂在右边的点。启发我们让 为反着的 ,询问 的点,这样也包括了 链上挂在左边的点。
考虑剩下的点,容易发现 的右边的点显然满足 ,其中 是 链上的第二个点。因此询问一次即可。 同理。
qoj8922
概述:
个人赛跑,第 个人有一个速度 表示他走单位距离需要的时间。第 场比赛为编号 的人参加。
赛跑场地始终相同,都有 个存档点,坐标依次为 。最后一个存档点是终点。初始时所有人从 出发,每次有人遇到存档点时其他所有人都会传送回自己的上一个存档点(同时则编号小的视为先到)。到终点的人不会被传送。
求问每场比赛的总传送次数。。
思路:
考虑传送事实上只是某个人前进了一个存档点,每两次传送之间互不影响。
对于两个人 ,若 更快则 一定让 传送了 次。因此我们答案至少是 。
再考虑更多传送的部分,事实上是较慢的 由于走的距离短导致了 的传送。那么这个时候我们完全可以视为 在走最长的一段(总时间消耗最大),而 在走某个前缀最大值(前一个时间比后一个长,那么走完前一个后必然会马上走下一个)。再根据上面说的传送互不影响,我们发现最终答案就是所有 传送次数的和。
由此得到一个看似 的算法,暴力枚举 ,再根据前缀 们暴力判断 会走到哪里。但是发现各段长总和仅有 种,因此前缀 数量仅 种。做到 。
优化是显然的:考虑每次加入一个人 ,对他之前的人与他的快慢关系讨论。 较快则是枚举前缀 ,分成 个区间询问。容易想到一个 做法:区间询问用树状数组维护,而找到区间用二分。前半部分经典平衡规划;后半部分由于前缀 数量少,区间左右端点单增,因此双指针预处理即可。 较慢时是对偶平衡规划问题,不细讲。至此本题做到 。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...