题目链接:http://codeforces.com/contest/1130/problem/D2
题目大意:有N个车站围成一个圆,火车按顺时针走,车站编号1-N,然后车站可能有人要去往某个车站,每次列车在一个车站只能带一个人,问你火车分别以1-N的车站为起点,最少需要多少时间把所有人带到目的地,火车花费一单位的时间从一个车站到另一个。
考虑从任意一个起点出发,走两圈之后一定可以将每个有人的车站中至少一人带到目的地
然后我们只需要考虑人最多的车站和比最多人数少1的车站,其他的车站在前面转圈的过程中,人已经全部到达目的地了,然后这些剩下的车站在前面转圈的过程中带走的是据目的地最远的人,因为前面在转圈的过程中会经过每一个车站,先把远一点的人带走,最后剩下一个近的人就可以少走一些路
人最多的车站和比最多人数少1的车站分别剩下两个人和一个人,然后比较从选定的起点开始,把剩下这些车站的剩下的人都送到目的地需要的时间,最长的时间就是剩下的人都送走需要的时间,最后一个送完的车站的人数-1就是转的圈数,所以最后答案加上圈数*n
找人数最多的车站可以通过排序完成,然后最近的人可以在输入的时候预处理
代码:
1 |
|