浙江财经大学第14届校赛 F Formula One (思维)



【题意】

 给N个车, 时间P   半径R,   n个汽车 完成一圈的信息, 

求从0-P   发生超车的次数;


【无敌LK算法】

    扫描n汽车, 对于 两辆汽车 求 第一次相遇的时间  时间为   (t1*t2) /(t1-t2)      故 在p 内相遇的次数为

P*(t1-t2) / (t1*t2)     当 恰p结束 两辆车相遇 不算超车 减一

嗯,应该是这样,

【code】


#include <iostream>
#include <stdio.h>
using namespace std;
typedef long long ll;
ll a[120];
int main()
{
    ll t,sum,r,m,s,n,p,v,ans=1;
    scanf("%d",&t);
    while (t--)
    {
        scanf("%lld%lld%lld",&n,&p,&r);
        sum=0;
        for (int i=1;i<=n;i++)
        scanf("%lld",&a[i]);
        for (int i=1;i<=n;i++)
            for (int j=i+1;j<=n;j++)
            {
                 s=a[i]*a[j];
                if (a[i]-a[j]!=0)
                {
                    m=max(a[i],a[j])-min(a[i],a[j]);
                    v=p*m;
                    r=v/s;
                    if (v%s==0)
                    r--;    
                    sum+=r;
                }   
            }
            printf("Case #%d: %lld\n",ans++,sum);   
    } 
    return 0;
} 
/**************************************************************
    Problem: 2696
    User: team108
    Language: C++
    Result: Accepted
    Time:148 ms
    Memory:1696 kb
****************************************************************/

123

posted @ 2018-03-24 21:02  Sizaif  阅读(159)  评论(0编辑  收藏  举报