CF1709B Also Try Minecraft

题意

给定 nn 个数的序列 a1,a2,,ana_1, a_2, \cdots, a_nmm 次询问,每次询问给定两个数 l,rl, r,需要输出 {i=lr1max{0,aiai+1}lri=rl1max{0,ai+1ai}r<l\begin{cases}\sum \limits_{i=l}^{r-1} \max\{0,a_{i}-a_{i+1}\} && l \leq r \\ \sum \limits_{i=r}^{l-1} \max\{0,a_{i+1}-a_i\} && r < l\end{cases}

解法

先考虑暴力,显然就是区间求和,但是由于 2n1052 \leq n \leq 10^51m1051 \leq m \leq 10^5。这个复杂度是 O(nm)O(nm) 的,显然超时。但是赛时好像有人暴力卡常过了 pretest,不过被 hack 了。

显然区间求和是可以优化的,因为这题没有修改操作,可以预处理出两个前缀和数组,O(n)O(n) 预处理,O(1)O(1) 单次查询。

当然区间和也可以用线段树或树状数组等数据结构,复杂度 O(mlogn)O(m \log n)。我赛时就用的是树状数组。

posted @   HappyBobb  阅读(10)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示