博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
luogu 1484\1792 种树 奇怪的贪心可反悔
阅读量:5317 次
发布时间:2019-06-14

本文共 1565 字,大约阅读时间需要 5 分钟。

1484 种树 此版本是线性的,那么根据链表维护即可;

构建新点,点的左右分别是原整个区间的前驱及后继,再正常维护即可

注意两个版本的维护有所不同

第二个版本的维护直接将左右两点删除

1792 种树2  此版本是环

1484

#include
#define ll long long using namespace std;const int N=500010;struct node{ ll v;int id; bool operator <(node a)const{ return v
q;int n,k;int main(){ n=read();k=read(); for(int i=1;i<=n;i++){ a[i]=read(); q.push((node){a[i],i}); l[i]=i-1;r[i]=i+1; }int len=n; for(int i=1;i<=k;i++){ while(!q.empty()&&vis[q.top().id]) q.pop(); if(q.empty()||q.top().v<0) break; node u=q.top();q.pop(); ans+=u.v; vis[u.id]=vis[l[u.id]]=vis[r[u.id]]=1; a[++len]=a[l[u.id]]+a[r[u.id]]-a[u.id]; l[len]=l[l[u.id]],r[len]=r[r[u.id]]; r[l[len]]=len;l[r[len]]=len; q.push((node){a[len],len}); }printf("%lld\n",ans); return 0;}

 

1792

#include
#define M 200050#define rep(i,x,y) for(register int i=x;i<=y;i++)using namespace std;inline int read(){ int x=0,f=1;char ch=getchar(); while(!isdigit(ch)){
if(ch=='-')f=-1;ch=getchar();} while(isdigit(ch)){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();} return x*f;}struct node{ int v,id; friend bool operator < (node x,node y){ return x.v < y.v;}};priority_queue
q;int n,m,ans,chose,r[M],l[M],a[M];bool vis[M];void change(int x){ vis[x]=1; r[l[x]]=r[x]; l[r[x]]=l[x]; r[x]=0;l[x]=0;}int main(){ n=read(),m=read(); rep(i,1,n) a[i]=read(); if((n>>1)

 

转载于:https://www.cnblogs.com/asdic/p/9605510.html

你可能感兴趣的文章
Python数据分析入门案例
查看>>
vue-devtools 获取到 vuex store 和 Vue 实例的?
查看>>
内存地址对齐
查看>>
yum 命令跳过特定(指定)软件包升级方法
查看>>
创新课程管理系统数据库设计心得
查看>>
Could not resolve view with name '***' in servlet with name 'dispatcher'
查看>>
pandas 修改指定列中所有内容
查看>>
lua语言入门之Sublime Text设置lua的Build System
查看>>
vue.js基础
查看>>
电脑的自带图标的显示
查看>>
[转载] redis 的两种持久化方式及原理
查看>>
C++ 删除字符串的两种实现方式
查看>>
ORA-01502: 索引'P_ABCD.PK_WEB_BASE'或这类索引的分区处于不可用状态
查看>>
Java抽象类和接口的比较
查看>>
MyBaits学习
查看>>
管道,数据共享,进程池
查看>>
CSS
查看>>
[Cypress] Stub a Post Request for Successful Form Submission with Cypress
查看>>
UNITY在VS中调试
查看>>
SDUTOJ3754_黑白棋(纯模拟)
查看>>