https://ac.nowcoder.com/acm/contest/5795/B
提取一个公式既可
具体看代码
#include<iostream> #include<algorithm> using namespace std; typedef long long ll; const int maxn = 2e5+111; pair<ll,ll>ins[maxn]; int a[maxn]; int b[maxn]; struct Node{ ll a,b,len; int id; }que[maxn]; bool bml(Node a,Node b){ return a.len > b.len; } int main(){ int n; cin>>n; for(int i=0;i<n;i++){ scanf("%lld",&que[i].a); } for(int i=0;i<n;i++){ scanf("%lld",&que[i].b); que[i].id = i; que[i].len = que[i].a - que[i].b; } sort(que,que+n,bml); ll ans = que[0].b; ll cns = 0; for(int i=1;i < n;i++){ cns = max(cns,que[i].len + ans + que[i].b); ans = max(que[i].b,ans); } printf("%lld ",cns); return 0; }