耍杂技的牛 (贪心)

Posted 行码棋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了耍杂技的牛 (贪心)相关的知识,希望对你有一定的参考价值。

题目链接

详细题解

思路:
每头牛的危险值 = 他前面牛的w(重量值)和 - 自身的s(强壮值),要使每头牛的危险值最小
这显然是与w 和 s同时相关,一种做法按 每头牛的w + s进行升序排序
在这里插入图片描述
在这里插入图片描述

  • 如何确定贪心规则呢?

可以对第 i i i个牛和第 i + 1 i+1 i+1个牛进行计算,对他们要计算的目标值用数学式子表达出来,然后交换位置,进行比较,得出不等式,就是交换后的最优解。

#include<bits/stdc++.h>
#define fi first
#define se second
using namespace std;
typedef long long ll;
typedef pair<ll,ll> pii;
const int N = 5e4+5;
pii p[N];
int n;

int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        int x,y;
        cin>>x>>y;
        p[i].fi = x+y;
        p[i].se = y;
    }
    sort(p+1,p+1+n);
    ll sum = 0,res = -INT_MAX;
    for(int i=1;i<=n;i++)
    {
        sum -= p[i].se;
        res = max(res,sum);
        sum += p[i].fi;
    }
    cout<<res<<'\\n';
    return 0;
}

以上是关于耍杂技的牛 (贪心)的主要内容,如果未能解决你的问题,请参考以下文章

AcWing 125. 耍杂技的牛 贪心+数学证明

[贪心] aw3720. 数组重排(公式推导+贪心)

第六章 贪心 完结

ACM - 贪心(经典母题+POJ一些练习题)

ACM - 贪心(经典母题+POJ一些练习题)

ACM - 贪心(经典母题+POJ一些练习题)