题意:
在一根长为L的水平木棍上有一群数量为n的蚂蚁,它们以每秒1cm/s的速度走到木棍一端就会掉下去。现在知道它们的起始位置是距离木根左端点的x处。但是不知道它们爬行的方向。在相向而行的两只蚂蚁相遇后,它们会掉头往反方向走。问所有蚂蚁都落下木棍的最快时间和最慢时间。
思路:
蚂蚁在碰撞前后可以视为相互穿过去,这样其实跟转向其实没有什么区别,因此显然最长距离是初始状态蚂蚁离竿子端点最大距离的一只,最短距离为离竿子一端最近的距离
#include<iostream> #include<cstdio> using namespace std; #define MAXN 100010 int l,n; int x[MAXN]; int main(){ int t; cin>>t; while(t--){ int minT=0; int maxT=0; cin>>l>>n; for(int i=0;i<n;i++){ cin>>x[i]; } for(int i=0;i<n;i++){ minT=max(minT,min(x[i],l-x[i])); } for(int i=0;i<n;i++){ maxT=max(maxT,max(x[i],l-x[i])); } cout<<minT<<" "<<maxT<<endl; } return 0; }
浙公网安备 33010602011771号