这是一道不简单的贪心,难度还是有的,老师的分析方法真的很不错啊,
老师讲课网址
https://www.acwing.com/video/317/
`这个牛是垂直摆放的,首先我们对两个量进行一个比较
我们先假设后面的是最大值,那我们对两头牛,只要满足wi+si<wi+1+si+1,交换之后最大值的确变小了
代码如下,需要注意范围于溢出问题
这里用的pair保存数据并进行排序。
#include<iostream>
#include<algorithm>
using namespace std;
typedef pair<int,int> PII;
const int N=5e4+10;
PII l[N];
int main(void)
{
int n,w,s;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>w>>s;
l[i]={w+s,w};
}
sort(l+1,l+n+1);
long long res=-2e9,sum=0;
for(int i=1;i<=n;i++)
{
w=l[i].second;s=l[i].first-w;
res=max(res,sum-s);
sum+=w;
}
cout<<res;
}