CodeCraft-22 and Codeforces Round #795 (Div. 2)D,E

本文介绍了两个经典的算法在信息技术问题中的应用。D.MaxGEQSum问题通过单调栈求解,确保数组中任意子序列的最大值大于其和。E.NumberOfGroups问题使用并查集解决区间连接问题,高效计算集合数量。通过实例解析算法思路,提供代码实现。

D.Max GEQ Sum

题意:
给你长度为 n ( 1 ≤ 2 ∗ 1 0 5 ) n(1 \leq 2*10^5) n(12105)的数组 a a a,是否满足对于任何 i , j ( 1 ≤ i ≤ j ≤ n ) i,j(1 \leq i \leq j \leq n) i,j(1ijn),保证
max ⁡ ( a i , a i + 1 , . . . , a j − 1 , a j ) ≥ a i + a i + 1 + . . . + a j 1 + a j \max(a_i,a_{i+1},...,a_{j-1},a_j) \geq a_i+a_{i+1}+...+a_{j_1}+a_j max(ai,ai+1,...,aj1,aj)ai+ai+1+...+aj1+aj思路:
通过单调栈,我们可以找到一个数字左/右第一个比它大的数字的位置,所以我们可以知道最大值为 a i a_i ai时的左右边界的取值范围
在这个范围内,只要 ∑ a \sum a a的最大值小于 max ⁡ a \max a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值