专栏文章

U619344 eating cows?(标准版) 题解

题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@minmkcur
此快照首次捕获于
2025/12/02 04:51
3 个月前
此快照最后确认于
2025/12/02 04:51
3 个月前
查看原文

形式化题目意思

给定一个长度为 nn 的序列 aa,你可以对一个长度为 2×k+12 \times k+1 的区间加一,这称为一次操作。请问你至少进行几次操作,可以满足 min1naim\min ^n_1 a_i \le m

题目思路

采用贪心算法,遍历 aa,如果对于 aia_i 这个元素,如果其小于 mm 则让 [i,i+2k][i,i+2k] 这个区间都加一即可。对于区间修改,单点查询的操作你可以用以下数据结构或预处理方法维护:前缀和差分(题解代码的方法)、树状数组、线段树……

伪代码(不给出AC代码)

CPP
for(i,1~n) 输入a_i,预处理差分数组 d.
for(i,1~n){
    处理差分数组
    如果 a_i 小于m{
        给 [i,i+2k] 这个区间经行加 l 操作(l为要加多少次才能使 a_i 满足条件)
    }
}
输出方法数

评论

0 条评论,欢迎与作者交流。

正在加载评论...