深入浅出程序设计竞赛(进阶篇)进阶数据结构
第五章 二叉堆
P2168 [NOI2015] 荷马史诗
P2827 [NOIP2016 提高组] 蚯蚓
找最长的蚯蚓只需要直到相对大小,其余蚯蚓长度
新产生的第一/二条蚯蚓长度分别单调,可以用队列代替堆
时间复杂度
P1801 黑匣子
对顶堆
P1631 序列合并
用堆维护可能成为答案的数对,取出
P4053 [JSOI2007] 建筑抢修
第六章 线段树
P1438 无聊的数列
区间加等差数列
懒标记记录(首项,公差),下传时可以根据左子区间长度算出右子区间的首项,合并时首项、公差对应相加即可
P3373 【模板】线段树 2
有乘、加两个标记,记作
P4513 小白逛公园
区间最大子段和
维护区间最大子段和、最大前缀和、最大后缀和、区间和
P4145 上帝造题的七分钟 2 / 花神游历各国
其实不需要线段树,并查集 + BIT 即可
第七章 树状数组与字典树
lowbit(x) = x&-x
:lowbit(x)
如果结点
( 时取等):考虑 中的所有数- 这些
的 lowbit 互不相等:lowbit 相等的结点覆盖的区间无交
P5283 [十二省联考 2019] 异或粽子
个数。给定 ,求 的第 大值
trie 上维护每个子树的数字数量,查询类似线段树二分
P2161 [SHOI2009] 会场预约
P3586 [POI2015] LOG
先让
结论:只要
证明:考虑构造
P4592 [TJOI2018] 异或
DFS 序上的可持久化 01trie 实现子树询问
根链上的可持久化 01trie 配合树上差分实现链询问
第八章 线段树的进阶用法
P4587 [FJOI2016] 神秘数
对于给定可重集,从小到大依次考虑数
据此得出做法:设
P3293 [SCOI2016] 美味
求
仍然是从高到低逐位贪心。设
时间复杂度
CF960F Pathwalks
有向图上边的 LIS
P2617 Dynamic Rankings
动态区间第
大
P2839 [国家集训队] middle
把
二分答案
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具