数学问题。
题目很难读懂。
给定的一个周期的时间表是的是
![](http://acm.tju.edu.cn/toj/vcontest/2093_chairlift2.gif)
左下那个点到右下那个点的时间
然后那个圆的周长占一个位置
然后就是要注意一下这两个点是在偏左的位置还是偏右的位置相遇
只需要判断一下从第一个点顺序走到第二个点的距离是否小于一半的总距离就好了
答案就出来了
1
#include<stdio.h>
2
int main()
3![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif)
{
4
int n,l,a,b,f,L;
5
double t,p,ans,min;
6
scanf("%d%lf",&n,&t);
7
f=n/2;
8
p=t/(f-0.5);
9
printf("N =%4d, T =%6.1lf\n",n,t);
10
while(scanf("%d%d",&a,&b)!=EOF)
11![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
12
l=a-b;
13
L=a-b;
14
if(l<0)
15![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
16
l=-l;
17
L+=n;
18
}
19
ans=(l-0.5)*p;
20
if((ans/2)>(t-ans/2))min=(t-ans/2);
21
else min=(ans/2);
22
printf("Chair%4d meets chair%4d, remaining time =",a,b);
23
if(L<f)printf("%6.1lf\n",min);
24
else printf("%6.1lf\n",t-min);
25![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
26
}
27
return 0;
28![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
29
}