题意:
给你n个蚂蚁和杆的长度L,下面输入这n只蚂蚁在杆上的位置(距离杆的左端点),开始的时候蚂蚁的运动方向都不确定,问你所有蚂蚁都掉下去(当蚂蚁到达杆的一端时就会落下)的最早时间和最晚时间。蚂蚁运动速度为1cm/s,杆长的单位是cm。 两只蚂蚁在杆上相遇的时候会同时掉头返回
题解:
你会发现两只蚂蚁相遇时虽然调头了,但是还是相当于没有调头。什么意思呢?就是两只蚂蚁相遇时在同一个点,这个时候它们的掉头返回可以看作另一个蚂蚁的没有改变方向直线行走
代码:
1 #include<stdio.h> 2 #include<string.h> 3 #include<iostream> 4 #include<algorithm> 5 #include<queue> 6 #include<map> 7 #include<vector> 8 #include<math.h> 9 #define mem(a,x) memset(a,x,sizeof(a)) 10 using namespace std; 11 typedef long long ll; 12 const int maxn=1200000+10; 13 const int mod=26; 14 const int INF=0x3f3f3f3f; 15 const int Times = 10; 16 const int N = 5500; 17 int v[maxn]; 18 int main() 19 { 20 int t,L,n; 21 scanf("%d",&t); 22 while(t--) 23 { 24 int minn,maxx,ans1=0,ans2=0; 25 scanf("%d%d",&L,&n); 26 for(int i=0; i<n; ++i) 27 scanf("%d",&v[i]); 28 for(int i=0; i<n; ++i) 29 { 30 minn=min(v[i],L-v[i]); 31 if(minn>ans1) 32 ans1=minn; 33 maxx=max(v[i],L-v[i]); 34 if(maxx>ans2) 35 ans2=maxx; 36 } 37 printf("%d %d ",ans1,ans2); 38 } 39 return 0; 40 }