有趣的脑子题(可惜我没有脑子

好像也可以称为模拟费用流(?

我们考虑用链表维护这个东西 再把贡献扔到堆里贪心就好了

大概就是类似于有反悔机制的贪心?我们相当于把选中的一个打上一个-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 ;
}

最新文章

  1. Windows Azure - Troubleshooting &amp; Debugging: Role Recycling
  2. Android的post()方法究竟运行在哪个线程中
  3. Linux:远程到linux的图形界面
  4. ASP.NET的SEO--- Global.asax和HttpModule中的RewritePath()方法
  5. sed实例一则
  6. erl0001-Erlang 设计原则 process port io
  7. [原]Unity3D深入浅出 - 雾效(Fog)
  8. Vim常用配置(~/.vimrc)(转载)
  9. Android各种颜色dawable.xml中定义
  10. tox环境安装
  11. Codeforces Round #479 (Div. 3) C. Less or Equal
  12. [物理学与PDEs]第4章第3节 一维反应流体力学方程组 3.1 一维反应流体力学方程组
  13. python 条件与循环
  14. 【BZOJ2299】[HAOI2011]向量(数论)
  15. 217/219. Contains Duplicate /Contains Duplicate II
  16. Codeforces343D(SummerTrainingDay06-F dfs序+线段树)
  17. MyBatis踩坑记录
  18. SQL Server 视图索引
  19. CMake与Make
  20. out.println(session.getLastAccessedTime());的返回值到底是毛线意思???

热门文章

  1. angular 发送ajax
  2. fengmiantu4
  3. React Native商城项目实战08 - 设置“More”界面cell
  4. 浅释Functor、Applicative与Monad
  5. 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第6节 static静态_14_静态static的内存图
  6. 用 Redis 实现 PHP 的简单消息队列
  7. js导入外部文件
  8. 结合element-ui封装的一个分页函数
  9. Haystack Python全文检索框架
  10. python 安装成linux中的systemd守护运行