Loading

Three Sequences

Three Sequences

题意:

给一个数组 \(a\) , 构造两个数组 \(b\) , \(c\) 。 使得 $a_i = b_i + c_i $ , 且 \(b\) 是非升序列, \(c\) 是非降序列。求 \(Min(Max(b_i,c_i))\)

\(q\) 次询问,每次询问给出三个数字 \(l,r,x\) , 询问区间 \([l,r]\) 加上 \(x\) 后的 \(Min(Max(b_i,c_i))\)

打比赛的时候不查询我都没有想到怎么求 \(Min(Max(b_i,c_i))\)

wc,理解错题意了,这个 \(Max(b_i,c_i)\) 的意思是整个数组 \(b\) ,\(c\) 里面的最大值。

那么问题就变成了最小化 \(Max(b_n,c_1)\)

思路:

最小化 \(Max(b_n,c_1)\) , 因为 \(c\) 是非增的,所以后面的 \(c\) 可以尽可能多的降,当\(c_1\) 确定的时候,\(b_1\) 也确定了,要使 \(b_n\) 尽可能的小,所以产生了如下的策略

\(a_i > a_{i-1}\)

则把多出来的那部分加到 \(b\) 上去, \(c\) 保持不变,因为如果 \(c\) 减小的话 ,\(b\) 要增加更多

\(a_i < a_{i-1}\)

\(b\) 不变,\(c\) 减去那一部分

而查询的时候,只有两个端点受到了影响。

posted @ 2020-09-15 21:52  —O0oO-  阅读(145)  评论(0编辑  收藏  举报