洛谷P1007题解
前往题目的传送门:
这是一道有趣的思维题。
你想象一下,你坐在直升机上,拿着RPG(火箭筒),看着底下一群傻瓜乱哄哄地跑。然而你发现一个有趣的现象:两个人怼到一起之后各自转身继续跑,相当于都没转身啊!可以理解为他们两个代替对方继续跑。因为所有士兵都是一样的,你可以两个士兵在点3相遇,那么下一秒肯定是一个在4一个在2。所以可以理解为他们的行动路线都是直线,而没有转弯。
那么问题就简单多了。每个人无非就是只能从桥的两头选一头下桥。对于最短时间,你只要算出他们每个人分别从快的那头下桥的速度比max,而最长时间就是他们每个人分别从慢的那头下桥的速度比max。
代码时间:
#include <bits/stdc++.h> using namespace std; signed main(void) { int l, n, minv = 0, maxv = 0; cin >> l >> n; for (int i = 0; i < n; i++) { int man; cin >> man; minv = max(minv, min(man, l - man + 1)); maxv = max(maxv, max(man, l - man + 1)); } cout << minv << ' ' << maxv; return 0; }
思维题的代码都不怎么难,只要思路出来了,题自然会写。

浙公网安备 33010602011771号