AT3631 Capture 题解

Doveqise

2019-03-29 18:53:26

Solution

(动物保护协会表示不服系列)这道题是单调队列,(其实可以贪心),压一个pair进单调队列,枚一遍这个小动物取不取,(记得加换行!),细节下见代码↓ ```cpp #include<bits/stdc++.h> using namespace std; typedef pair<long long,int>P; const int maxn=2e5+5; long long n,x[maxn],s[maxn],m; signed main(){ priority_queue<P>q; scanf("%lld",&n); for(int i=1;i<=n;i++){ scanf("%lld%lld",&x[i],&s[i]); s[i]+=s[i-1];q.push(P(s[i]-x[i],i));} for(int i=1,flag;i<=n;i++){ flag=1;while(flag){ P p=q.top(); if(p.second<i)q.pop(); else{m=max(m,p.first-s[i-1]+x[i]);flag=0;} } } printf("%lld\n",m); return 0; } ```