【每日一题】5月28日 Protecting the Flowers

Protecting the Flowers

https://ac.nowcoder.com/acm/problem/25043

大致题意: 给定n 头牛,每头牛每分钟都会造成破坏图片说明 ,农夫可以将牛拉回牛栏里面花费的时间是图片说明 .请问农夫拉回牛的顺序是多少可以使得破坏最少。

分析:贪心。
考虑第i 头牛和第j 头牛,哪头先拉入牛栏.
如果图片说明图片说明 后,那么破坏为:图片说明.
如果图片说明图片说明 后,那么破坏为:图片说明 .
要使得破坏程度最少,即:
图片说明
化简: 图片说明
那么我们就按照上式子进行排序从小到大拉入牛进牛栏。然后依次算破坏程度即可。

#include<bits/stdc++.h>

using namespace std;

typedef long long ll;

const int maxn=2e5+10;

pair<int,int> p[maxn];

bool cmp( pair<int,int> a,pair<int,int> b ){ return a.first*b.second<a.second*b.first; }

int main()
{
    int n;ll ans=0,sum=0,now=0;
    cin>>n;
    for( int i=1;i<=n;i++ ) cin>>p[i].first>>p[i].second,sum+=p[i].second;
    sort(p+1,p+1+n,cmp);
    for( int i=1;i<=n;i++ )
    {
        sum-=p[i].second;
        ans+=sum*2*p[i].first;
    }
    cout<<ans<<endl;
} 
每日一题 文章被收录于专栏

每日一题

全部评论

相关推荐

头像
11-06 10:58
已编辑
门头沟学院 嵌入式工程师
双非25想找富婆不想打工:哦,这该死的伦敦腔,我敢打赌,你简直是个天才,如果我有offer的话,我一定用offer狠狠的打在你的脸上
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务