<JZOJ4726>种花
2024-09-07 05:46:33
挺有意思的贪心
神奇的贪心
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>
#define rint register int
using std::priority_queue;
template <class T>inline void read(T &X)
{
X=;int W=;char ch=;
while(!isdigit(ch))W|=ch=='-',ch=getchar();
while(isdigit(ch))X=(X<<)+(X<<)+(ch^),ch=getchar();
X=W?-X:X;return;
}
int n,m,pre[],nxt[],vis[]={};
long long ans=,a[];
struct node
{
int num;
friend bool operator <(node x,node y)
{
return a[x.num]<a[y.num];
}
};
priority_queue<node>q;
int main()
{
read(n),read(m);
if(m>(n>>)){printf("Error!");return ;}
node x;
for(rint i=;i<=n;++i)
{
read(a[i]);
pre[i]=(i==)?n:i-,nxt[i]=(i==n)?:i+;
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]]=;
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 ;
}
最新文章
- SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)【转】
- 第3.3 案例2: 工作队列 job queue
- (转)Android消息处理机制(Handler、Looper、MessageQueue与Message)
- Golang学习 - strings 包
- UVA 753 A Plug for UNIX 电器插座(最大基数匹配,网络流)
- libstdc++.so.5: cannot open shared object file: No such file or directory
- 试用mysql的infobright引擎
- Java基础学习笔记1
- Python之向日志输出中添加上下文信息
- Spring+SpringMVC+MyBatis集成学习笔记【一】
- 数据库索引B-树和B+树
- Java-ServletContextAttributeListener
- java8的函数式接口
- 痞子衡嵌入式:ARM Cortex-M文件那些事(0)- 文件关联
- OpenStack共享组件
- 一文理解 Java NIO 核心组件
- 20165306 2017-2018-2《Java程序设计》课程总结
- 【转】 SQL - 生成指定范围内的随机数
- 【.Net】在windows server 2016 和Windows10这些server上安装.net fw3.5
- Oracle Function:TO_CHAR
热门文章
- 17.3.10--关于C元的变量类型所占字节问题和类型转化
- 编程基础-servlet1
- 吴裕雄--天生自然 pythonTensorFlow图形数据处理:windows操作系统删除tensorflow
- Win10用Windows照片查看程序(照片查看器)打开图片
- Educational Codeforces Round 76 (Rated for Div. 2)E(dp||贪心||题解写法)
- 2020 CCPC Wannafly Winter Camp Day1-F-乘法
- s01字符串---蓝桥杯
- [USACO09DEC]晕牛Dizzy Cows (拓扑排序)
- Base64转PDF、PDF转IMG(使用pdfbox插件)
- 32)PHP,遍历对象的属性或者属性值