1 条题解
-
0
题意
数轴 上有一只老鼠,初始时可能位于数轴上的任意点。这只老鼠可以在数轴上任意移动,但是任何时刻瞬时速度不超过 个单位每秒。
有 只机器猫,部署第 只的代价为 ,部署后它会在 时刻出现在 ,以每秒 个单位的速度向 移动。
老鼠初始时有 点血量,如果在某个时刻和一只机器猫完全重合,就会减 点血量,这只机器猫也会被销毁。
求最小代价,使得无论老鼠如何移动,最终血量都 。多测,,。
题解
场外选手。激战一百年,也是自己做出来了,有点开心。
考察老鼠的移动有什么限制,移速不超过 ,意味着对于一个时间段都有 $|\Delta x|\leq \Delta t\Leftrightarrow -\Delta t\leq \Delta x\leq \Delta t$,也就是说,$\Delta t+\Delta x\geq 0\land \Delta t-\Delta x\geq 0$。考虑变换坐标,令 ,这样老鼠的初始位置为 ,且任意时刻都要满足 ,相当于只能朝着右上方移动。考察 的限制,代入 ,可以得出 ,也就是说,老鼠还被限制在 和 两条直线之间。
考虑变换坐标后,机器猫的移动路径。若 ,则
$$\begin{align*} x=a_i+t-t_i&\Leftrightarrow t-x=t_i-a_i\\ t\in [t_i,t_i+(b_i-a_i)]\land x\in [a_i,b_i]&\Leftrightarrow t+x\in [t_i+a_i,t_i+(b_i-a_i)+b_i] \end{align*}$$此时机器猫的移动路径为一条垂直线段。
同理,若 ,可以得到 $t+x=t_i+a_i\land t-x\in [t_i-a_i,t_i+(a_i-b_i)-b_i]$,机器猫的移动路径为一条水平线段。
现在问题就转化成了:有一个点 ,只能朝着右上方移动,被限制在 和 两条直线之间。现在有一些垂直或水平的线段,要求以最小代价选取一些线段,使得无论点如何移动,都会碰到至少 条线段。
不妨先做 ,相当于要选出若干条线段使得老鼠无法通过。考察一组合法线段的形态:

黑色实线是我们选出来的线段。可以发现,选出来的线段一定能围出一个分界线(图中绿色虚线),使得一边是老鼠可达的区域,另一边是老鼠不可达的区域。不妨给分界线定向,以与 的交点为起点,与 的交点为终点。可以发现这样定向之后,沿着分界线走,向左或向上走时一定是沿着线段走的,向右或向下走时则不是(这是老鼠只能往右上走的限制自然形成的分界线)。不妨考察相邻线段之间的限制,钦定一条线段的起点为靠近 的那一端,终点为另一端,设 为第 条线段的终点, 为第 条线段的起点,则可以分讨得出, 和 之间的限制为 。
据此考虑图论建模,套路地将线段 拆成 两个点,从 向 连一条权值为 的边。对于任意两条线段 ,若 的终点 和 的起点 满足前文中的性质,则从 向 连一条权值为 的边。最后建立源点 和汇点 ,对于每条线段 ,若 的起点在 上,则从 向 连一条权值为 的边;若 的终点在 上,则从 向 连一条权值为 的边。这样建图后,不难看出答案就是 到 的最短路。
考虑进一步推广到 的情况,此时我们需要选出 条不交的分界线。不难想到网络流,将连边改为:
- 向 连一条容量为 ,权值为 的边。
- 从 向 连一条容量为 ,权值为 的边。
- 从 向 连一条容量为 ,权值为 的边。
- 从 向 连一条容量为 ,权值为 的边。
此时从 到 的 个单位的流量就代表选出了一条分界线,那么我们限制最大流 ,求最小费用最大流即可。具体来说,每一轮增广的流量为 ,那么我们增广 轮即可,最终费用就是答案,若无法增广 轮则无解。
建出来的图边数是 的,时间复杂度为 ,可以获得 分。
进一步优化,注意到连边条件为二维偏序的形式,因此考虑 CDQ 分治优化建图。具体来说,考虑 条线段的 个端点,将所有端点按 坐标从小到大排序, 坐标相同的按 坐标从大到小排, 坐标相同的把线段终点排在起点前面(读者需要理解一下这个排序方式,其实是为了处理取等)。CDQ 分治,递归到 时处理所有跨过 的连边:分别取出左侧的线段终点和右侧的线段起点,按 坐标排序,枚举左侧的线段终点 ,则其能连向的线段起点 是一段前缀,使用前缀优化建图即可。这样点数和边数都是 级别的,时间复杂度为 ,可以获得 分。
改成用原始对偶求费用流,由于边权非负,初始时不必跑 SPFA,将势能初始化为 即可,时间复杂度为 ,可以获得 分。
- 1
信息
- ID
- 7200
- 时间
- 6000ms
- 内存
- 1024MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者