贪心感觉是个不难的算法,这题一开始超时了,简化下就好
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
struct cow
{
int T;
int D;
};
int comp(struct cow a,struct cow b)
{
return (a.T*1.0/a.D)<(b.T*1.0/b.D);
}
int main()
{ struct cow a[100001];
int i,n,j;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d%d",&a[i].T,&a[i].D);
sort(a+1,a+1+n,comp);
long long sum0=0,sum1=0;
/*超时代码
for(i=1;i<=n;i++)
{ sum0=0;
for(j=i+1;j<=n;j++)
{
sum0+=a[j].D*2;
}
sum1=sum1+sum0*a[i].T;
}
printf("%lld\n", sum1);*/
long long sumd=0,sumt=0;
for(i=1;i<=n;i++)
{
sumd += a[i].D * sumt;
sumt += a[i].T * 2;
}
printf("%lld\n", sumd);
return 0;
}