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