[Gym] 101669G SEERC 2017 Robots

版权声明:博主很懒,转载注明出处就好=w= https://blog.csdn.net/Pure_W/article/details/83480359

斜率越大的放越前面,贪心模拟一次

#include<bits/stdc++.h>
using namespace std;
#define pow(a) ((a)*(a))

int n;

struct ver
{
    double a,t;
    void in(){scanf("%lf%lf",&a,&t);}
    #define cver const ver &
    friend bool operator < (cver a,cver b){return a.a>b.a;}
}a[10000];

inline double solve()
{
    double dis=0,v=0;
    for (int i=0;i<n;i++)
    {
        double nv=v+a[i].a*a[i].t;
        dis+=(pow(nv)-pow(v))/2/a[i].a;
        v=nv;
    }
    return dis;
}

int main()
{
    scanf("%d",&n);
    for (int i=0;i<n;i++) a[i].in();
    double a1=solve();
    sort(a,a+n);
    double a2=solve();
    printf("%.1lf\n",a2-a1);
}

猜你喜欢

转载自blog.csdn.net/Pure_W/article/details/83480359