poj1852 Ants(思维)

https://vjudge.net/problem/POJ-1852

最短时间显然是各自往靠近端点的地方走。

最长时间关键是要想到,折返和擦肩其实是一样的,可以当成两只蚂蚁换了个位子,最终求max是一样的。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<queue>
 4 #include<cstring>
 5 #include<algorithm>
 6 #include<cmath>
 7 #include<map>
 8 #define lson l, m, rt<<1
 9 #define rson m+1, r, rt<<1|1
10 #define INF 0x3f3f3f3f
11 typedef unsigned long long ll;
12 using namespace std;
13 int main()
14 {
15     int t, n, a, m;
16     scanf("%d", &t);
17     while(t--){
18         scanf("%d%d", &n, &m);
19         int tmp1, tmp2, mini=-INF, maxm=-INF;
20         for(int i = 0; i < m; i++){
21             scanf("%d", &a);
22             tmp1 = min(a, n-a);//取每只蚂蚁掉下去的最短时间
23             mini = max(mini, tmp1);
24             
25             tmp2 = max(a, n-a);
26             maxm = max(maxm, tmp2);//取每只蚂蚁掉下去的最长时间
27         }
28         printf("%d %d\n", mini, maxm);
29     }
30     return 0;
31 }

猜你喜欢

转载自www.cnblogs.com/Surprisezang/p/9074822.html