nssl1269-射击【贪心,堆】
生活随笔
收集整理的這篇文章主要介紹了
nssl1269-射击【贪心,堆】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
正題
題目大意
有n個東西,東西必須在aisa_i\ sai??s前破壞,破壞后可以獲得wiw_iwi?價值,求最大價值。
解題思路
我們可以將時間從大到小排序,然后用堆,每次處理價值最大的就好了。
code
#include<cstdio> #include<queue> #include<algorithm> #define ll long long #define N 200100 using namespace std; struct node{ll t,w; }a[N]; ll n,last,ans; priority_queue<ll> q; bool cmp(node x,node y)//排序 {return x.t==y.t?x.w>y.w:x.t>y.t;} int main() {scanf("%lld",&n);for(ll i=1;i<=n;i++)scanf("%lld%lld",&a[i].t,&a[i].w);sort(a+1,a+1+n,cmp);for(ll i=1;i<=n;i++){if(a[i].w<0) continue;q.push(a[i].w);for(ll j=a[i+1].t;j<a[i].t&&!q.empty();j++){ans+=q.top();q.pop();}}printf("%lld",ans); }總結
以上是生活随笔為你收集整理的nssl1269-射击【贪心,堆】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑视频线哪种清晰度更高高清视频线哪种好
- 下一篇: nssl1270-创世纪【树形dp,基环