一二三四五 上山打老虎

NC25043-Protecting the Flowers

题目链接:https://ac.nowcoder.com/acm/problem/25043
题意:很多牛跑到花坛上啃花,给出牛数目n和每头牛牵走所需要的时间ti和单位时间牛啃花的数目di,寻找最优牵牛序列,使得被啃掉的花数目最少,输出最少值。
思路:经典贪心

#include<cstdio>
#include<algorithm>
#include<vector>

using namespace std;
typedef pair<long long,int> pii;
vector<pii> v;
bool cmp(pii s,pii r){
    return s.first*r.second<s.second*r.first;
}
int main (){
    int n;
    scanf("%d",&n);
    long long l;
    int r;
    for(int i=0;i<n;i++){
        scanf("%lld%d",&l,&r);
        v.push_back({l,r});
    }
    sort(v.begin(),v.end(),cmp);
    l=0;r=0;
    for(int i=0;i<n;i++){
        l+=v[i].second*r;
        r+=v[i].first;
    }
    printf("%lld",2*l);

    return 0;
}

posted @ 2021-01-19 22:04  黒川川  阅读(53)  评论(0)    收藏  举报