老司机破阵

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. 关于AQS——独占锁特性+共享锁实现(二)

    五.可中断获取锁的实现(独占锁的特性之一) 我们知道lock相较于synchronized有一些更方便的特性,比如能响应中断以及超时等待等特性,现在我们依旧采用通过学习源码的方式来看看能够响应中断是怎 ...

  2. 056 Merge Intervals 合并区间

    给出一个区间的集合, 请合并所有重叠的区间.示例:给出 [1,3],[2,6],[8,10],[15,18],返回 [1,6],[8,10],[15,18].详见:https://leetcode.c ...

  3. 使用centos7的wall防火墙可能存在失效问题

    centos7有自己新的防火墙,但是仍然带有centos6.5的iptable防火墙,当新防火墙不稳定,失效时,可以采用老防火墙 以上都是在vm虚拟机上发现的问题 参考文章 https://www.c ...

  4. 5.类型、值和变量-JavaScript权威指南笔记

    开始变得有意思起来了,然而第三章还是以基础知识了解的角度阐释相关的概念,并没有深入到结合代码以及要实现的功能讲用法和原理的程度. 1.概论. value:程序的运行是对值的操作. type:能够表示并 ...

  5. vue使用uglifyjs-webpack-plugin后打包报错

    楼主最新对已做项目进行打包优化,配置了打包环境下去除console.log语句插件---使用uglifyjs-webpack-plugin具体代码如下 npm install uglifyjs-web ...

  6. java项目定时任务实现

    首先配置spring-context.xml文件 在xmlns 下加如下代码 xmlns:task="http://www.springframework.org/schema/task&q ...

  7. Android--View事件传递

    Android--View事件传递 View事件传递首先要明白以下要素: 事件就是MotionEvent.该对象包含了传递的事件中的所有信息 事件的来源是Window(即PhoneWindow),包含 ...

  8. [PCL]对‘pcl::visualization::CloudViewer::CloudViewer(std::string const&)’未定义的引用

    pcl::visualization::CloudViewer viewer("Cloud Viewer"); 这个时候报错. 试了很多方法,有人说,targe t_link 时候 ...

  9. jspscriptlet标签

    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding= ...

  10. MFC【exe】工程中的文件大致信息(翻译的)

    在工程文件夹中有个readme文件,下面是翻译过来的. ======================================================================== ...