51nod 1053 最大M子段和 V2[贪心][链表][堆]
来源:互联网 发布:mac如何下载eclipse 编辑:程序博客网 时间:2024/05/16 17:10
思路
#include<cstdio>#include<queue>#include<algorithm>#define ABS(x) (x>0?x:-x)#define N 50000#define LL long longusing namespace std;int n,m,l[N+5],r[N+5];LL v[N+5];struct node{ int p; bool operator < (const node &x) const { return ABS(v[p])>ABS(v[x.p]); }};priority_queue<node>heap;int main(){ scanf("%d %d",&n,&m); int cnt=0,now=0; LL ans=0,x,V=0; for(int i=1;i<=n;++i) { scanf("%lld",&x); if(x==0) continue; if(V==0) {V=x;continue;} if(x>0) {if(V>0) V+=x;else v[++cnt]=V,V=x;} if(x<0) {if(V<0) V+=x;else v[++cnt]=V,V=x;} } v[++cnt]=V; for(int i=1;i<=cnt;++i) { if(v[i]>0) ++now,ans+=v[i]; l[i]=i-1,r[i]=i+1;heap.push((node){i}); } l[0]=0,r[0]=1,l[cnt+1]=cnt,r[cnt+1]=cnt+1; int tmp,L,R; while(now>m) { tmp=heap.top().p;heap.pop(); if(l[r[tmp]]!=tmp||r[l[tmp]]!=tmp) continue; if(!v[tmp]||(v[tmp]<0&&(l[tmp]<1||r[tmp]>cnt))) continue; ans-=ABS(v[tmp]),--now; v[tmp]=v[tmp]+v[l[tmp]]+v[r[tmp]]; L=l[l[tmp]],R=r[r[tmp]]; l[tmp]=L,r[tmp]=R,r[L]=tmp,l[R]=tmp; heap.push((node){tmp}); } printf("%lld",ans);}
阅读全文
0 0
- 51nod 1053 最大M子段和 V2[贪心][链表][堆]
- 51nod 最大M子段和V2【贪心】【链表】【堆】
- 【贪心+优先队列】51Nod 1053 最大M子段和 V2
- 51nod 1053 最大M子段和 V2
- 51Nod-1053-最大M子段和 V2
- 51nod 1053 最大M子段和 V2
- 【贪心+堆+链表】51Nod1053[最大M子段和 V2]题解
- [贪心+堆+链表] 51Nod1053 最大M子段和 V2
- [贪心 堆 链表] BZOJ 3502 PA2012 Tanie linie & 51Nod 1052 最大M子段和
- 51nod 最大M子段和 V1,V2,V3 dp 贪心 heap(bzoj2288)
- 51nod 1053 最大M子段和 V2 (链表 对经典dp进行优化)
- 51nod 最大M子段和
- 51nod 1254最大子段和V2
- 51Nod-1254-最大子段和 V2
- 51nod 1254 最大子段和 V2
- 51 nod 1254 最大子段和 V2(思维)
- 51Nod-1052-最大M子段和
- 【51Nod 1052】 最大M子段和
- roslaunch error: ERROR: cannot launch node of type
- Hibernate实体类注解错误- Could not determine type for: java.util.Set,at table:
- CF811E Vladik and Entertaining Flags(线段树+并查集)
- 数据结构二之双链表(找不出异常原因抓狂)
- Scrapy简介
- 51nod 1053 最大M子段和 V2[贪心][链表][堆]
- 【Python】【爬虫】关于requests库
- Remove Duplicates from Sorted Array
- 【SSM】WEB项目中的中文乱码问题
- 【2】git基本用法(上)
- USACO 丢失的牛
- 在XAMPP上运行一个组合的Jekyll / PHP站点
- HBase分析之Get、Scan(一)
- CDQZ Challenge 16