【笔记】数据结构选讲 2024.7.31
【模板】"动态 DP"&动态树分治(树剖)
P4719 【模板】"动态 DP"&动态树分治 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
这样可以轻易写为树剖,令
[Ynoi Easy Round 2020] TEST_63(LCT)
P8265 [Ynoi Easy Round 2020] TEST_63 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
维护一条链的信息:先 access 链底全改成重边,再考虑维护树链剖分(显然根据定义只会改轻
在 LCT 上维护轻子树信息是能做的。然后你维护了重链信息之后就能做了。
维护一个集合,支持增删
[JOISC 2019 Day2] Two Antennas(历史最值)
#3033. 「JOISC 2019 Day2」两个天线 - 题目 - LibreOJ (loj.ac)
扫描线,试图维护历史最大值信息。对于天线
[Ynoi2002 / CTT2022] Optimal Ordered Problem Solver(修改分类)
P9061 [Ynoi2002] Optimal Ordered Problem Solver - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
所有的点,要么没有被操作过,要么在操作矩形的并的轮廓线上。
修改:轮廓线上的点做
查询:轮廓线上的点截取出来数一下,外面的三维偏序。
三维偏序是
[CTT2021] 简单数据结构(修改分类)
【北大集训2021】简单数据结构 - 题目 - Universal Online Judge (uoj.ac)
如果没有 3 操作而是最后输出序列,那么可以将一堆操作合并为
如果已经知道每个点的首次修改时间,则可以使用线段树标记维护。为了求出前者,使用整体二分。每次整体二分求一个凸壳出来,看一眼怎么修改,然后分下去。
[Hangzhou23F] Top Cluster(直径性质)
Top Cluster - Problem - QOJ.ac
权值互不相同是关键。二分答案,查询
[dmopc21c8p6] Castle Building(匹配)
[DMOPC '21 Contest 8 P6 - Castle Building - DMOJ: Modern Online Judge](https://dmoj.ca/problem/dmopc21c8p6#:~:text=Initially, 1 3 4 5 7)
分讨
[NOIWC2024] 线段树(树上 dp)
P10145 [WC2024] 线段树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
会了,不想写题解啊
[Ynoi2009] rprmq1(历史最值)
P6109 [Ynoi2009] rprmq1 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
将询问拆成二区间合并的形式。以拆出的右区间为例,为了保证所有矩形加操作都有顾及,可以考虑在同一层中处理这些区间。用一棵历史最大值线段树扫过去,扫到一个分治区间中点的时候,为了保证查询不被中点前面部分影响,可以给全局加一个
[Hangzhou23K] Card Game(可持久化平衡树)
记
[Hefei23K] Campus Partition(树上 dp)
Campus Partition - Problem - QOJ.ac
所划分的一定是链,且链的两端是最大值与次大值(否则不优)。
[KOI TST 2023] 택시 여행 / Taxi(点分)
运行 Dijkstra 算法。
点分树,需要支持在所有点分树父亲上插入一次函数,查询单点最小值,写若干李超线段树即可。都是平凡的。
[CTT2021] 小明的树(点边容斥)
【北大集训2021】小明的树 - 题目 - Universal Online Judge (uoj.ac)
点边容斥计算连通块,只需要分开讨论每一条边什么时候给谁有贡献,需要求
[2022-2023 集训队互测 Round 2] 相等树链(点分、hash)
点分治到重心
[CF1707E] Replace(倍增)
Replace - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
重要的观察:
这样就好多了啊!
倍增:
任意 RMQ 算法,没了啊!
[CF1558F] Strange Sort(0/1 转化)
Strange Sort - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
枚举
我们要求的是
外层的
[QOJ4815] Flower's Land(点分、树上背包)
题解 QOJ4815【Flower's Land】 - caijianhong - 博客园 (cnblogs.com)
Segbeats(势能分析)
线段树支持 1. 区间 chkmin
考虑在线段树上每个节点维护
:无影响。 :打上标记,表示以后将所有最大值改为 ,不往下递归, 可以维护。 :暴力向下递归。
复杂度分析:暴力向下递归之后,这个线段树区间的不同值的个数会至少减少一,总不超过
如果加上区间加操作,复杂度变为
本文来自博客园,作者:caijianhong,转载请注明原文链接:https://www.cnblogs.com/caijianhong/p/18332787
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步