主席树
y_immortal
蒟蒻蒟蒻
展开
-
洛谷2468 [SDOI2010]粟粟的书架 (前缀和+主席树)
qwq传说中的二合一题、 首先考虑数据范围比较小的那一档的分应该怎么得 由于rrr和ccc都比较小,那么不难想到前缀和。 我们用sum[i][j][k]sum[i][j][k]sum[i][j][k]表示(1,1)到(i,j)(1,1)到(i,j)(1,1)到(i,j)这片区域里面大于等于kkk的数的总和是多少。 然后用a[i][j][k]a[i][j][k]a[i][j][k]表示数有多少个。 ...原创 2019-02-04 12:33:43 · 157 阅读 · 0 评论 -
uoj77a+b problem (主席树优化建图+最小割)
qwq自己yy的建图 感觉自己捞的一 qwq 首先对于每一个位置有两种颜色,分别有不同的收益,所以不难想到是最小割,相当于把位置划分成黑白两个集合。 那么考虑一个朴素的建图 首先对于一个点iii,我们S−>iS->iS−>i边权是黑色的收益的绝对值,表示不选黑色要放弃这么多收益。i−>Ti->Ti−>T边权是白色的收益的绝对值,也...原创 2019-02-14 08:55:48 · 284 阅读 · 0 评论 -
洛谷4899 [IOI2018] werewolf 狼人 (克鲁斯卡尔重构树+主席树)
(最近开始疯狂拖欠博客…怎么破啊) qwq 不会用树状数组二维数点可怎么整 qwq 果然菜哭了 首先,我们来看这个题,首先对于题目中的阈值,貌似不太好处理,但是看到了只能经过大于等于/小于多少权值的点的字眼,不难相当克鲁斯卡尔重构树。 可是,我们应该怎么转点权为边权呢。 我们来考虑LLL的限制,首先,由于是只能走大于等于某一个权值的点,那么,我们对于一条边,一定要满足他的两端都大于这个要求,才可以...原创 2019-02-12 20:30:28 · 279 阅读 · 0 评论 -
洛谷2617 Dynamic Rankings(带修主席树学习笔记)
qwq 菜的真实 过完年一点都不想学习。 首先我们看这个题,一个带修主席树的板子题。 qwq 首先,如果选择暴力修改,每次会修改O(n)O(n)O(n)级别的主席树,这个复杂度是没有办法接受的。 但是我们学过一个东西叫树状数组BITBITBIT 他的思想,是将修改和查询的复杂度都变成了logloglog 相当于是带修前缀和。 既然主席树也是前缀和的形式。 那么这时候呢,我们不妨稍微改变一下主席树的...原创 2019-02-05 19:10:45 · 380 阅读 · 1 评论 -
洛谷3302 [SDOI2013]森林(主席树+启发式合并)
qwq好题啊 其实看到题目的第一眼,我以为是LCT。 但是发现做起来很麻烦 qwq 首先 树上路径第kkk大的问题可以直接通过主席树来实现。 那么连边这个操作该怎么办呢? qwq我们发现 题目保证连完边之后还是一个森林。 那么这时候 我们会发现最终的形态会是一棵树 那么可以考虑启发式合并。 对于每一次连边,我们重新遍历小的联通块,更新主席树数组和fff数组。 void change(int x,i...原创 2019-02-05 17:09:17 · 166 阅读 · 0 评论 -
洛谷4197 Peaks(克鲁斯卡尔重构树+主席树)伪克鲁斯卡尔重构树学习笔记
其实之前做归程那个题的时候,已经学习克鲁斯卡尔重构树,但是由于没有写博客,所以一直没有学习笔记。 qwq借着这个题,顺便说一下克鲁斯卡尔重构树吧。 克鲁斯卡尔重构树。 假设我们要求一个最小生成树的克鲁斯卡尔重构树的话,首先,先排好序,然后对于一条边来说,我们新建一个新点表示这条边,点权设成这条边的边权,然后将两个端点所在的联通块的fafafa设置成新建的点。 那么经过这样一番操作过后,对于一颗子树...原创 2019-02-05 14:37:09 · 309 阅读 · 0 评论 -
洛谷2839 middle(主席树+二分)
qwq首先 题目描述有误,应该是子串。 qwq感觉题目不是很好入手,那不妨一步一步来。 首先考虑该如何求一个序列的中位数呢。 通过erferferf一个midmidmid,然后对于大于等于mid的数赋值成1,然后小于的数赋值成0,那么如果总和大于等于0,就将midmidmid值在调大,否则变小。 qwq那么我是不是可以用同样的方式呢? 由于他让我们在一个区间内选择左右端点,所以我们应该取的是类似中...原创 2019-02-05 12:16:31 · 224 阅读 · 0 评论 -
洛谷2633 Count on a tree (树上主席树)
由于题目中很明确的说了是求第kkk小的问题,所以很容易想到主席树。 那么如果实现树上的主席树呢? 我们想一下,如何求一段路径的点权和呢? 通过维护每个点到根的和,然后通过sum[u]+sum[v]−sum[lca(u,v)]−sum[fa[lca(u,v)]]sum[u]+sum[v]-sum[lca(u,v)]-sum[fa[lca(u,v)]]sum[u]+sum[v]−sum[lca(u,v...原创 2019-02-05 11:50:07 · 196 阅读 · 0 评论 -
洛谷3168 [CQOI2015]任务查询系统(主席树)
我们发现,题目中询问的是关于秒的信息,而且还涉及到了第k小之前的所有任务的和。 不难想到主席树。 但是主席树并不能支持区间修改啊 qwq 那么应该怎么办呢? 考虑到由于主席树维护的是一个前缀和的形式,那我们不妨考虑把区间修改进行拆解,可以直接看成在sss时刻一个加的标记和e+1e+1e+1时刻的一个减得标记。 然后直接顺着时刻来建主席树就没有什么问题辣~ 询问的话,直接在主席树上二分即可 就是如果...原创 2019-02-04 12:58:08 · 168 阅读 · 0 评论 -
洛谷3241 [HNOI2015]开店(标记永久化+主席树+树剖)
这个题可以说是LNOI2014 LCA这个题的加强版 所以那个题的博客就咕咕咕啦 hhh qwq直接介绍做法了 考虑一个如何求两个点x,yx,yx,y的lcalcalca到根的路径和,我们发现,如果我们在确定一个根后,将每一条边的边权赋值给他的tototo,那么实际上就是对于xxx,把它所有到根的路径上所有点都标记+1+1+1,然后在yyy点统计yyy到根的路径上所有点的标记数×权值标记数\tim...原创 2019-03-22 23:01:34 · 331 阅读 · 0 评论