老司机破阵

Time Limit: 4500/1500MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)

Problem Description

老司机的女朋友被坏人抓起来了,护女票心切的老司机心急火燎的赶到坏人藏匿女票的地点想要救出她,但是老司机的神通广大坏人们早有耳闻,等老司机赶到时已经有一个法阵摆在他的面前阻挡着他。

法阵是一条直线上的n个法力元件构成的,老司机每次可以将一个法力元件击碎,法阵的能量就是所有 连贯的元件能量和的最大值 。

老司机非常的自信,他有一套自己的破除法阵的方案(虽然不见得是最佳)

老司机希望能实时的关注着法阵的能量,一旦能量允许,他就破阵而入,救出女票。

忙着破阵的老司机自然没有功夫去计算他每步操作之后法阵的能量,他只能将此重任交与在座的各位大侠,请大家助他一臂之力。

Input

第一行n (1 ≤ n ≤ 100,000),为法力元件数量

第二行有n个数,为每个法力元件所含有的能量ei(0 ≤ ei ≤ 1e9)

第三行有n个数,为老司机击破法力元件的顺序

Output

输出n行,为老司机每次击破法力元件后法阵的能量。

Sample Input

5

1 2 3 4 5

4 2 3 5 1

8

5 5 4 4 6 6 5 5

5 2 8 7 1 3 4 6

Sample Output

6

5

5

1

0

8

18

16

11

8

8

6

6

0


解题心得:

  1. 别被题意给唬住了,可以去看看并查集的倒用,题意是叫你去将一个集合拆开,看起来很恐怖,其实完全是不需要的,只要按照拆开的顺序逆着来合并就可以了,运用一个并查集的知识,但是有也有要注意的东西,就是使用倒过来合并的时候叫你输出最大的能量顺序一开始应该是0,最后的那个所有能量的和其实是不存在的不应该输出,自己处理一下就好了。

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+100;
int num1[maxn],num2[maxn];
int father[maxn];
long long sum[maxn];
long long ans[maxn];
long long Max = 0;
bool vis[maxn]; int find(int x)
{
if(father[x] == x)
return x;
else
return father[x] = find(father[x]);
} void merge(int a,int b)
{
int fa = find(a);
int fb = find(b);
if(fa != fb)
{
father[fb] = fa;
sum[fa] += sum[fb];//在集合合并的时候也要将他们的和加起来
}
} long long Find(int x)
{
vis[x] = true;
if(sum[x] > Max)
Max = sum[x];
if(vis[x+1])//如果它的上一个存在就合并
{
merge(x,x+1);
if(sum[find(x)] > Max)
Max = sum[find(x)];
}
if(vis[x-1])//下一个存在也合并
{
merge(x,x-1);
if(sum[find(x)] > Max)
Max = sum[find(x)];
}
return Max;//记录每次连接的最大值
} int main()
{
int n;
while(scanf("%d",&n) != EOF)
{
Max = 0;
memset(vis,0,sizeof(vis));
int t = 0;
for(int i=1; i<=n; i++)
{
scanf("%d",&num1[i]);
sum[i] = num1[i];
father[i] = i;
}
for(int i=1; i<=n; i++)
scanf("%d",&num2[i]);//记录拆除的顺序
ans[t++] = 0;//记录答案
for(int i=n; i>=1; i--)
{
long long now;
now = Find(num2[i]);
ans[t++] = now;
}
for(int i=t-2; i>=0; i--)
printf("%lld\n",ans[i]);
}
}

并查集:CDOJ1593-老司机破阵 (假的并查集拆除)的更多相关文章

  1. 并查集:CDOJ1594-老司机的奇幻漂流 (食物链)

    老司机的奇幻漂流 UESTC - 1594 Problem Description 老司机在救出了女票之后,就和她在全世界旅游,有一天,他们来到了一个神奇的小岛上. 这个小岛上有三种动物,他们互相克制 ...

  2. 老司机带你玩转面试(5):Redis 集群模式 Redis Cluster

    前文回顾 建议前面文章没看过的同学先看下前面的文章: 「老司机带你玩转面试(1):缓存中间件 Redis 基础知识以及数据持久化」 「老司机带你玩转面试(2):Redis 过期策略以及缓存雪崩.击穿. ...

  3. 老司机带你玩转面试(2):Redis 过期策略以及缓存雪崩、击穿、穿透

    前文回顾 建议前一篇文章没看过的同学先看下前面的文章: 「老司机带你玩转面试(1):缓存中间件 Redis 基础知识以及数据持久化」 过期策略 Redis 的过期策略都有哪些? 在聊这个问题之前,一定 ...

  4. 老司机的奇怪noip模拟T2-huangyueying

    2. 黄月英(huangyueying.cpp/c/pas )[问题描述]xpp 每天研究天文学研究哲学,对于人生又有一些我们完全无法理解的思考.在某天无聊学术之后, xpp 打开了 http://w ...

  5. 老司机实战Windows Server Docker:2 docker化现有iis应用的正确姿势

    前言 上一篇老司机实战Windows Server Docker:1 初体验之各种填坑介绍了安装docker服务过程中的一些小坑.这一篇,我们来填一些稍大一些的坑:如何docker化一个现有的iis应 ...

  6. 老司机带你开飞机 一: mssql on linux 安装指导

    通常在本机开发环境中需要搭建所有的服务,还要修改本地的hosts,实在是不胜其烦.如今有了docker,完全不用污染本地环境,且看老司机带你搭建一个asp.net core的开发环境集群.愿你走出虚拟 ...

  7. 年薪30W的软件测试“老司机”工作经验

    这几天,新入职的小MM提议“老司机”们把自己这些年的软件测试工作经验跟大家分享一下,让新同学学习学习,利用空闲时间我整理了一些,可能不全,勉强看看,这也算是对自己这些年的工作总结. 测试阶段划分 1. ...

  8. bugku秋名山老司机+写博客的第一天

    bugku之秋名山老司机 题目连接:http://123.206.87.240:8002/qiumingshan/ 一点进去是这样的 请在两秒内计算这个式子...怎么可能算的出来 查看源码,无果.. ...

  9. 面试官问我,为什么老司机建议MySQL列属性尽量用 NOT NULL ?

    本文阅读时间大约6分钟. 其实写这篇文章,也是来自一个知识星球读者的提问,他在二面的过程中被问到了,由于他简历中写道有 MySQL 调优经验,但这个问题没有回答好,二面被刷了. 其实我们刚学习 C 语 ...

随机推荐

  1. c++笔记2

    一 继承和多态.虚函数:类不必重复造轮子,可以从其它基类派生而来(多重继承(由多个基类的特点)和虚拟继承(基类的一些特性在继承之间共享)).派生类需要在自己的头文件中包含基类头文件,切派生类声明要指明 ...

  2. 关于74HC4051的逻辑真值表及延时的重要性/在AD测量中的校准

    一 关于74HC4051: 在/E=0使能输出的条件下,S2S1S0的三个值,能选通Y0~Y7其中的一个通道从Z输出. 二:问题提出:在按照IC给出的真值表进行芯片操作时,输出逻辑完全对不上 三:分析 ...

  3. CentOS7.5 搭建mycat1.6.6

    1.环境及版本 操作系统:   CentOS 7.5 数据库:MySQL 5.7.23 jdk:1.8.0_191 mycat:1.6.6.1 cat /etc/centos-release mysq ...

  4. 拖拽调整Div大小

    今天写了一天这个jquery插件: 可以实现对div进行拖拽来调整大小的功能. (function ($) { $.fn.dragDivResize = function () { var delta ...

  5. 老生常谈Java虚拟机垃圾回收机制(必看篇)

    二.垃圾收集 垃圾收集主要是针对堆和方法区进行. 程序计数器.虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后也会消失,因此不需要对这三个区域进行垃圾回收. 判断一 ...

  6. windows服务器安装安全狗时服务名如何填写

    安全狗安装时“服务名”这一栏指的是apache进程的服务名称,即进入“任务管理-服务”里显示的名称. phpstudy等软件搭建的环境需要设置运行模式为“系统服务”后才能看到服务名.

  7. Image(支持 XML 序列化),注意C#中原生的Image类是无法进行Xml序列化的

    /// <summary> /// Image(支持 XML 序列化) /// </summary> [XmlRoot("XmlImage")] publi ...

  8. sql问题:备份集中的数据库备份与现有的 '办公系统' 数据库不同

    解决方法:把备份的数据库从原有的地方先分离,再拷贝一份,在需要还原的服务器上附加到数据库中,在根数据库上点击“还原数据库”,选择需要还原的数据库名称,以及还原的bak备份文件,在选择“选项”,勾选上“ ...

  9. RYU的GUI安装

    1. RYU安装 Ubuntu14.04 LTS 1.sudo apt-get install git python-pip libxml2-dev libxslt1-dev python2.7-de ...

  10. SAP GUI里Screen Painter的工作原理

    我们在SAP GUI里双击一个screen编号: 单击Layout按钮可以打开Screen Painter: 这背后的工作原理是什么? 是这个RFC destination在起作用: Connecti ...