【题解】P7667 [JOI2018] Art Exhibition
题目分析
乍一看,好像有很多个变量,要在这些变量中得到答案没有那么直观。但是如果我们关注题目“令
那我们是不是应该要枚举
所以我们考虑只枚举
这样我们就可以在常数时间内实现状态的转移,鉴于复杂度瓶颈在于排序部分的
代码实现
#include<bits/stdc++.h>
#define int long long
using namespace std;
struct num{
int sz,val;
bool operator <(const num &temp)const{
return sz<temp.sz;
}
}a[500005];
int n,f[500005],ans,mx;
signed main(){
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i].sz>>a[i].val;
sort(a+1,a+n+1);
for(int i=1;i<n;i++)
f[i]=a[i].val-a[i+1].sz+a[i].sz;
for(int i=1;i<=n;i++){
int t=a[i].val;
ans=max(ans,t+mx);
mx=max(mx+f[i],(long long)0);
}cout<<ans<<endl;
return 0;
}