影魔
这一道题目有一个非常重要的思想,就是确定一个基准
就像计数题目一样,我们将一个区间确定一个基准,我们一般用端点作为基准,然而这道题目却行不通
但是这道题目的题干却一直提到最大值,所以我们以一个区间的最大值为基准,显然可以唯一确定
那么就不难确定一个区间
所以我们对每一个数,求出它左边和右边距离他最近的又比他大的数(单调栈)
然后按照题解处理即可(看到无修改,可以想到离线)
解释一下他这个处理方法,考虑
也可以用类似于HH的项链的方法,我们的代码用的是这个方法
这两种方法都要记下来,我们对第二种方法更加熟悉,然而第一种方法也是有应用的,比如在某些子树的统计题目里面:进入子树之前记录数组值,递归完之后准备出去的时候再记录数组值,相减即得答案
update 2024.5.16
我们也可以以区间的端点作为基准,下面以第一类贡献为例讨论
我们仍然像上面这样处理处
如果我们已经维护好了一个序列,若第
还有一个问题,就是这道题目的询问是某一个区间,此时就要像题解那样子处理:对于一个区间
以上做法有问题,可以想一下应该怎么做
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构