本题是洛谷P1007题,重点是将相撞问题变换视角,看似是相撞,实则是两人各自成为了对方,在替对方完成任务。
独木桥
题目背景
战争已经进入到紧要时间。你是运输小队长,正在率领运输部队向前线运送物资。运输任务像做题一样的无聊。你希望找些刺激,于是命令你的士兵们到前方的一座独木桥上欣赏风景,而你留在桥下欣赏士兵们。士兵们十分愤怒,因为这座独木桥十分狭窄,只能容纳
题目描述
突然,你收到从指挥部发来的信息,敌军的轰炸机正朝着你所在的独木桥飞来!为了安全,你的部队必须撤下独木桥。独木桥的长度为
每个士兵都有一个初始面对的方向,他们会以匀速朝着这个方向行走,中途不会自己改变方向。但是,如果两个士兵面对面相遇,他们无法彼此通过对方,于是就分别转身,继续行走。转身不需要任何的时间。
由于先前的愤怒,你已不能控制你的士兵。甚至,你连每个士兵初始面对的方向都不知道。因此,你想要知道你的部队最少需要多少时间就可能全部撤离独木桥。另外,总部也在安排阻拦敌人的进攻,因此你还需要知道你的部队最多需要多少时间才能全部撤离独木桥。
输入格式
第一行共一个整数
第二行共一个整数
第三行共有
输出格式
共一行,输出
样例 #1
样例输入 #1
1 | 4 |
样例输出 #1
1 | 2 4 |
提示
对于
题解
1. 问题等价
假设有以下独木桥,士兵1位于1位置,士兵2位于2位置。他们相对而行。
t = 0.5时刻,相遇:
士兵1:
士兵2:
此后,士兵1返回:
士兵2返回:
可以看到,士兵2不过是继续完成士兵1没有走完的路罢了,士兵1也在完成士兵2没走完的路,实际上问题可以简单等效为每个士兵选中一个方向,一直走到结束所花费的时间中,整体撤离的最短时间和整体撤离的最长时间。
士兵1实际时间:
士兵2实际时间:
士兵1本来时间:
士兵2本来时间:
由于士兵相遇前走过时间相同,相遇后相互成为对方,所以,士兵1和士兵2实际的时间刚好就是本来的时间互换。总之,相遇仅会改变士兵编号,对最终结果并无影响,所以这里我们可以直接遍历全部士兵求解时间。
2.编码求解
1 |
|