题意
长为m的杆子上有n只蚂蚁,每只蚂蚁的速度是1,已知每只蚂蚁所在杆子的位置,朝向未知,两只蚂蚁相遇时反向爬回,求所有蚂蚁爬下杆子所用的最短及最长时间
思路
因为速度相同,所以相遇时反向爬回相当于无视对面蚂蚁接着朝现在所朝方向爬行,求最短时间就是求与哪一边离得近,并找出最大值;求最长时间就是求与哪一边离得远,并找出最大值。
总结
竟然因为用cin cout超时???EXCUSE ME???
1 #include2 #include 3 #include 4 #include 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 }