【题意】
给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