https://ac.nowcoder.com/acm/problem/25043
题意:
有n头牛要***漂亮的花朵,已知每头牛迁回牛舍的时间以及每分钟***花的数量,问最少要损耗多少花才能遏制这种行为。

分析:
出于保护美的渴望,这种止损的行为下意识贪心了起来,脑瓜不够用先简化一下问题,假设只有2头牛,如果我们牵第一个回去,那么损失花朵数量=第一个迁过去来回的时间*第二个每分钟***花的数量,如此看来,我们要比较排序每头牛迁回牛舍的时间与之后牛吃花的速度,如此进行贪心选择。

代码:

#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<math.h>
using namespace std;
typedef long long ll;
int i,j,n,k,tt,m;
ll cnt;
using namespace std;
struct Hi{
    int t,d;
}a[100005];
int cmp(Hi aa,Hi bb){
    return aa.t*bb.d<aa.d*bb.t;
}
int main()
{
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%d%d",&a[i].t,&a[i].d);
    }
    sort(a,a+n,cmp);
    for(i=0;i<n;i++){
        cnt+=a[i].d*tt;
        tt+=a[i].t*2;
    }
    printf("%lld",cnt);
}