一些数据结构维护手法,好题
一些数据结构维护手法,好题
[蓝桥杯 2022 国 AC] 替换字符
发现字母的变换有复合性质,可以用线段树维护一个
当两个标记合并的时候有:
One Occurrence
对于这种某个数只出现一次的经典题,考虑一个经典的 trick,我们维护一个
我们发现若
我们发现这样我们不好处理,因为多了个
利用扫描线思想,我们把询问离线下来,扫
我们用一个线段树,维护区间
对于扫到某个位置
A Simple Task
题目要求我们对区间的所有字母排序(升序或者降序),我们不难发现其实本质就是按
每次区间修改就是遍历
所以我们可以用线段树维护每种字母的出现次数。
故我们开
laoya 的有根树
很容易想到离线,我们可以先把整颗树建好,那么增加一个点和删除一个点,都相当于在树上修改权值,当一个叶子被删除的时候,其到根结点上的整条链上的
对于
所以我们不难想到维护树上的最大,次大,最小,次小。
而且还要支持子树查询,链上修改。
我们很容易想到树链剖分+线段树维护。(这里要注意边界,例如当子树内只有一个数的时候,次大和次小是不存在的,要弄成无穷,当增加或者删除的时候,要注意边界的修改)
数组划分
考虑没有修改怎么做,我们可以仿照最大字段和的思路,令
不难得到如下转移方程:
然后考虑修改,这是一个经典的动态 DP,我们把 DP 的转移看成一个
每次单点修改,相当于修改与
最后答案就为:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】