耍杂技的牛 (贪心)
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;
}
以上是关于耍杂技的牛 (贪心)的主要内容,如果未能解决你的问题,请参考以下文章