题意
长为m的杆子上有n只蚂蚁,每只蚂蚁的速度是1,已知每只蚂蚁所在杆子的位置,朝向未知,两只蚂蚁相遇时反向爬回,求所有蚂蚁爬下杆子所用的最短及最长时间
思路
因为速度相同,所以相遇时反向爬回相当于无视对面蚂蚁接着朝现在所朝方向爬行,求最短时间就是求与哪一边离得近,并找出最大值;求最长时间就是求与哪一边离得远,并找出最大值。
总结
竟然因为用cin cout超时???EXCUSE ME???
1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cstring> 5 using namespace std; 6 const int INF = 0x3f3f3f3f; 7 const int maxn = 1000005; 8 int T, n, m; 9 int s[maxn]; 10 int main() 11 { 12 //freopen("in.txt", "r", stdin); 13 scanf("%d", &T); 14 while(T--) { 15 memset(s, 0, sizeof s); 16 scanf("%d %d", &n, &m); 17 int Min = 0, Max = 0; 18 for(int i = 0; i < m; i++) { 19 scanf("%d", &s[i]); 20 int k = min(s[i], n - s[i]); 21 Min = max(Min, k); 22 Max = max(Max, n - k); 23 } 24 printf("%d %d\n", Min, Max); 25 } 26 27 return 0 ; 28 }