上海计算机学会2023年12月月赛C++乙组T4擦除序列

擦除序列

内存限制: 256 Mb时间限制: 1000 ms

题目描述

黑板上有 n 个数字,小爱每一次会擦除其中的某个数字,直至所有数字被擦完为止。

每一轮擦除一个数字后,小爱想知道剩下未被擦除的所有数字中,最大连续子段和的值。(在选择最大连续子段和时,不能包含任何被擦除的位置)

输入格式

输入共三行:
第一行:一个正整数n,表示原有数字个数
第二行:n个正整数a1​,a2​,...,an​,分别表示原序列的值
第三行:n个正整数p1​,p2​,...,pn​,表示每次被擦除数字的位置

输出格式

输出共n个数字,分别表示每一轮擦除后,剩下的最大子段和的值,以空格隔开

数据范围
  • 对于 30% 的数据,满足 1≤n≤10^2。
  • 对于 60% 的数据,满足 1≤n≤10^4
  • 对于 100% 的数据,满足 1≤n≤10^5,1≤ai​≤10^9。
样例数据

输入:
5
1 2 3 4 5
3 5 2 4 1
输出:
9 4 4 1 0
说明:
第1轮:删除第3个数字,得 1 2 X 4 5,此时最大子段和为4+5
第2轮:删除第5个数字,得 1 2 X 4 X,此时最大子段和为4
第3轮:删除第2个数字,得 1 X X 4 X,此时最大子段和为4
第4轮:删除第4个数字,得 1 X X X X,此时最大子段和为1
第5轮:删除第1个数字,得 X X X X X,此时最大子段和为0 

解析:使用倒序,最后一个子段和为0,然后从最后擦除的数字开始添加,使用并查集维护子段和,依次找出最大子段和,

详见代码:

 <

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长春高老师信奥工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值