LOJ 2840「JOISC 2018 Day 4」糖
2024-09-05 03:41:26
有趣的脑子题(可惜我没有脑子
好像也可以称为模拟费用流(?
我们考虑用链表维护这个东西 再把贡献扔到堆里贪心就好了
大概就是类似于有反悔机制的贪心?我们相当于把选中的一个打上一个-v的tag然后如果选了它旁边的就把它取消掉 也是一个打tag的思想
说起来不是很好描述 看代码可能会更好理解(?
//Love and Freedom.
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#define ll long long
#define inf 20021225
#define pa pair<ll,int>
#define mp make_pair
#define fs first
#define se second
#define N 200001
using namespace std;
int read()
{
int s=,f=; char ch=getchar();
while(ch<''||ch>''){if(ch=='-') f=-; ch=getchar();}
while(ch>=''&&ch<='') s=s*+ch-'',ch=getchar();
return s*f;
}
int pre[N],nxt[N]; ll val[N];
int a[N],n; bool vis[N];
priority_queue<pa> hp;
void upd(int x)
{
vis[x]=;
nxt[pre[x]]=nxt[x];
pre[nxt[x]]=pre[x];
}
int main()
{
n=read(); ll ans=; val[]=-1ll*inf*inf; val[n+]=-1ll*inf*inf;
for(int i=;i<=n;i++)
val[i]=a[i]=read(),pre[i]=i-,nxt[i]=i+,hp.push(mp(val[i],i));
for(int i=;i+i-<=n;i++)
{
while(vis[hp.top().se]) hp.pop();
pa tmp=hp.top(); hp.pop();
ll v=tmp.fs; int pos=tmp.se;
ans+=v; printf("%lld\n",ans);
int l=pre[pos],r=nxt[pos];
val[pos]=val[l]+val[r]-val[pos];
if(l && r<=n) hp.push(mp(val[pos],pos));
upd(l); upd(r);
}
return ;
}
最新文章
- Windows Azure - Troubleshooting &; Debugging: Role Recycling
- Android的post()方法究竟运行在哪个线程中
- Linux:远程到linux的图形界面
- ASP.NET的SEO--- Global.asax和HttpModule中的RewritePath()方法
- sed实例一则
- erl0001-Erlang 设计原则 process port io
- [原]Unity3D深入浅出 - 雾效(Fog)
- Vim常用配置(~/.vimrc)(转载)
- Android各种颜色dawable.xml中定义
- tox环境安装
- Codeforces Round #479 (Div. 3) C. Less or Equal
- [物理学与PDEs]第4章第3节 一维反应流体力学方程组 3.1 一维反应流体力学方程组
- python 条件与循环
- 【BZOJ2299】[HAOI2011]向量(数论)
- 217/219. Contains Duplicate /Contains Duplicate II
- Codeforces343D(SummerTrainingDay06-F dfs序+线段树)
- MyBatis踩坑记录
- SQL Server 视图索引
- CMake与Make
- out.println(session.getLastAccessedTime());的返回值到底是毛线意思???
热门文章
- angular 发送ajax
- fengmiantu4
- React Native商城项目实战08 - 设置“More”界面cell
- 浅释Functor、Applicative与Monad
- 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第6节 static静态_14_静态static的内存图
- 用 Redis 实现 PHP 的简单消息队列
- js导入外部文件
- 结合element-ui封装的一个分页函数
- Haystack Python全文检索框架
- python 安装成linux中的systemd守护运行