博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
<JZOJ4726>种花
阅读量:5249 次
发布时间:2019-06-14

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

挺有意思的贪心

神奇的贪心

#include
#include
#include
#include
#include
#define rint register intusing std::priority_queue;template
inline void read(T &X){ X=0;int W=0;char ch=0; while(!isdigit(ch))W|=ch=='-',ch=getchar(); while(isdigit(ch))X=(X<<3)+(X<<1)+(ch^48),ch=getchar(); X=W?-X:X;return;}int n,m,pre[200010],nxt[200010],vis[200010]={ 0};long long ans=0,a[200010];struct node{ int num; friend bool operator <(node x,node y) { return a[x.num]
q;int main(){ read(n),read(m); if(m>(n>>1)){printf("Error!");return 0;} node x; for(rint i=1;i<=n;++i) { read(a[i]); pre[i]=(i==1)?n:i-1,nxt[i]=(i==n)?1:i+1; x.num=i,q.push(x); } while(m--) { for(x=q.top(),q.pop();vis[x.num];x=q.top(),q.pop()); ans+=a[x.num]; a[x.num]=a[pre[x.num]]+a[nxt[x.num]]-a[x.num]; vis[pre[x.num]]=vis[nxt[x.num]]=1; pre[x.num]=pre[pre[x.num]]; nxt[x.num]=nxt[nxt[x.num]]; nxt[pre[x.num]]=pre[nxt[x.num]]=x.num; q.push(x); } printf("%lld\n",ans);return 0;}

 

转载于:https://www.cnblogs.com/pile8852/p/9881948.html

你可能感兴趣的文章
java中静态代码块的用法 static用法详解
查看>>
Java线程面试题
查看>>
Paper Reading: Relation Networks for Object Detection
查看>>
day22 01 初识面向对象----简单的人狗大战小游戏
查看>>
mybatis源代码分析:深入了解mybatis延迟加载机制
查看>>
Flask三剑客
查看>>
Hibernate-缓存
查看>>
【BZOJ4516】生成魔咒(后缀自动机)
查看>>
提高PHP性能的10条建议
查看>>
svn“Previous operation has not finished; run 'cleanup' if it was interrupted“报错的解决方法...
查看>>
熟用TableView
查看>>
Java大数——a^b + b^a
查看>>
poj 3164 最小树形图(朱刘算法)
查看>>
服务器内存泄露 , 重启后恢复问题解决方案
查看>>
android一些细节问题
查看>>
KDESVN中commit时出现containing working copy admin area is missing错误提示
查看>>
利用AOP写2PC框架(二)
查看>>
【动态规划】skiing
查看>>
java定时器的使用(Timer)
查看>>
ef codefirst VS里修改数据表结构后更新到数据库
查看>>