好。
最关键的观察:第一个人确定走的方向后,所有人走的方向都只有一种可能使他感染。
那现在就有一个显然的做法:枚举第一个人走的方向,所有人之间如果能相遇,就连边,用类似最短路的方法来求。
现在边数是 \(n^2\) 的,但是这种东西有个套路,就是对于任意一点,一个方向上的边只建一条最近的边。
边的种类有两种,加上方向不同,每种方向的人有三种不同的边。开四个 \(dis\) 数组表示三种边走来的距离和感染他的最小时间,跑最短路就可以了。
代码难度较大,几个技巧是提前离散化出每个直线上的点,还有给每种边编号一类的。谨慎实现。
标签:热病,所有人,短路,每种,IOI,方向 From: https://www.cnblogs.com/hikkio/p/17608651.html