Ants POJ
阿新 • • 發佈:2018-12-21
題目:傳送門(又水了一道題xufu)
一隊螞蟻在一根水平杆上行走,每隻螞蟻固定速度 1cm/s. 當一隻螞蟻走到杆的盡頭時,立即從稈上掉落. 當兩隻螞蟻相遇時它們會掉頭向相反的方向前進. 我們知道每隻螞蟻在杆上的初始位置, 但是, 我們不知道螞蟻向哪個方向前行. 你的任務是計算所有螞蟻都杆上掉落可能的最短時間和最長時間.
Input
第一行包含一個整數,給出測試例項數量. 每組資料開始有兩個整數: 杆的長度 (單位:cm) 和杆上螞蟻數量 n. 之後是 n 個整數給出每隻螞蟻從杆的最左邊開始的位置, 且是無序的. 輸入的每個整數都不大於 1000000 ,兩個數字用空格分開.
Output
對於每組輸入輸出兩個整數. 第一個整數表示所有螞蟻從杆上掉落可能的最短時間(如果它們前行方向選擇得當) ,第二個整數表示可能的最長時間.
這一道是個思維題,看出來了就是水題,看不出來就是難題。
思路:把螞蟻相撞再掉頭看成相錯開,再繼續前進,這樣題目的解題思路就很明瞭了。
code:
//https://vjudge.net/problem/POJ-1182 #include<iostream> #include<stdio.h> #include<algorithm> #include<cmath> using namespace std; int main() { int t; int n,k; int d; scanf("%d",&t); while(t--) { int mi,ma; int i; scanf("%d%d",&n,&k); scanf("%d",&mi); ma=max(n-mi,mi); mi=min(n-mi,mi); for(i=1;i<k;i++) { int x; scanf("%d",&x); ma=max(max(n-x,x),ma); mi=max(min(n-x,x),mi); } printf("%d %d\n",mi,ma); } return 0; }