hdu 1275 两车追及或相遇问题

思路:这里有2种情况:

一种是相遇:满足关系是 (va+vb)*t=L*(2*n-1)

一种是追及: 满足关系是 |va-vb|*t=L*(2*n-1)

这样求出2种情况的时间,在排序就可以了……

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1275

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<string>
using namespace std;
double
ans[2001];
int
main()
{

    int
n,num,m,ia,ib,i,j;
    double
len,va,vb,dis;
    cin>>m;
    while
(m--)
    {

        cin>>len>>va>>vb>>num;
        j=1;
        for
(i=1;i<=1000;i++)
        {

            ans[j++]=(2*i-1)*len/(va+vb);
            ans[j++]=(2*i-1)*len/fabs(va-vb);
        }

        sort(ans,ans+j);
        dis=ans[num]*va;
        while
(dis-len>0) dis-=len;
        if
(len-dis<dis) dis=len-dis;
        printf("Time=%.3lf Dist=%.3lf ",ans[num],dis);
    }

    return
0;
}

原文地址:https://www.cnblogs.com/xin-hua/p/3194172.html