题目大意:n头牛,每一头牛都有体重与力量值。它们玩叠罗汉的游戏,每个牛的危险值等于它上面的牛的体重总和减去它的力量值,求所有方案中危险值最大的最小是多少
题解:考虑到只有相邻牛有关,调整法,排序+贪心即可
#include <iostream>
#include <cstdio>
#include <climits>
#include <algorithm>
using namespace std;
#define INF INT_MAX
int n,tot=-INF,sum;
struct cow{
int w,p;
}c[50005];
bool cmp(cow a,cow b){
return a.w+a.p<b.w+b.p;
}
void init()
{
cin>>n;
for(int i=1;i<=n;i++)
scanf("%d%d",&c[i].w,&c[i].p);
sort(c+1,c+1+n,cmp);
}
void work()
{
for(int i=1;i<=n;i++)
{
tot=max(tot,sum-c[i].p);
sum+=c[i].w;
}
printf("%d\n",tot);
}
int main()
{
init();
work();
}