http://poj.org/problem?id=3262
奶牛每分钟吃掉D朵花,赶走它需要T分钟(来回加倍)。
求最小损失花朵数量。
优先赶走吃得多且走的慢的牛。
#include<iostream>
#include<algorithm>
using namespace std;
int N;
long long sum[100010];
long long ans=0;
struct cow
{
long long t,d;
}c[100010];
int cmp(cow a,cow b)
{
return (a.t*1.0/a.d)<(b.t*1.0/b.d);
}
int main()
{
cin >> N;
for(int i=0;i<N;++i){
cin >> c[i].t >> c[i].d;
}
sort(c,c+N,cmp);
sum[N-1]=0;
for(int i=N-2;i>=0;i--){
sum[i]=sum[i+1]+c[i+1].d;
}
for(int i=0;i<N;++i){
ans+=2*c[i].t*sum[i];
}
cout << ans << endl;
}