Icefox的博客

生活不止眼前的苟且,还有诗和远方。

【UNR #3】Day1

A(70) #include <bits/stdc++.h> using namespace std; #define ll long long #define inf 0x3f3f3f3f #define N 200010 inlin...

2018-07-13 16:31:01

阅读数 102

评论数 0

bzoj4448 [Scoi2015]情报传递(树上主席树+离线)

#include <bits/stdc++.h> using namespace std; #define ll long long #define inf 0x3f3f3f3f #define N 200010 inline char ...

2018-06-22 12:02:32

阅读数 49

评论数 0

bzoj3123 [Sdoi2013]森林(树上主席树+启发式合并)

求路径k小值,树上主席树即可。 还有合并两棵树的操作,我们可以启发式合并。 复杂度O(nlog2n)O(nlog2n)O(nlog^2n) 这题真是充分体现了我的zz 一开始 洛谷 T,发现离散化以后就过了luogu 然后bzoj T ,怪罪于垃圾回收,删了果然过了 然而突然发现,我的...

2018-06-16 17:43:37

阅读数 184

评论数 1

bzoj4826 [Hnoi2017]影魔(单调栈+主席树)

我们先单调栈求出每一个数左边/右边第一个大于他的数的位置L,R 那么以a[i]为最大数的贡献是: 左端点L[i],右端点R[i],贡献p1 左端点L[i]+1~i-1,右端点R[i],贡献p2 左端点L[i],右端点i+1~R[i]-1,贡献p2 我们如果把左右端点当做坐标的话,投射到二...

2018-06-16 16:19:26

阅读数 119

评论数 0

bzoj5358 [Lydsy1805月赛]口算训练(分解质因数+主席树/二分)

给定一个序列,求[l,r]的数的乘积是不是d的倍数。 我们考虑给d分解质因数,如果对于每个质因数这个区间内的个数都大于它的次数,那么就是d的倍数。而1e5以内的数最多有6个不同的质因数。 我们考虑给每个数分解质因数,维护区间和即可。我写的主席树。 其实也可以直接对于每种质因数记下它每一次出现...

2018-05-27 22:23:12

阅读数 109

评论数 0

bzoj5361 [Lydsy1805月赛]对称数(树上主席树+二分答案)

给定一棵树,每个点有权值,求路径上最小的出现了偶数次(可以为0)的权值。 比赛时试图树上莫队+线段树(O(nlogn−−−−−√)O(nlogn)O(\sqrt{nlogn}))卡过去,然而当然是不可能的啦囧。 正解是我们对每个点一颗线段树维护到根的路径上的权值区间的异或和。 但是这样很有可...

2018-05-27 22:17:32

阅读数 203

评论数 0

loj2555「CTSC2018」混合果汁(二分答案+主席树)

二分答案,查询最小花费即可。用主席树来维护就好啦 #include <bits/stdc++.h> using namespace std; #define ll long long #define inf 0x3f3f3f3f #define N 1...

2018-05-17 22:08:31

阅读数 133

评论数 0

bzoj4504 K个串(主席树+堆)

很类似bzoj2006。 只是这次的区间和比较难算,我们需要建主席树来求。 rt[i]的每个叶节点x,表示右端点为i时左端点为x时的答案。 每个节点要维护区间最大值,及最大值所在位置。 我们有两种操作,区间加和查询区间最大值。 区间加的主席树比较麻烦。下放时要新建节点太慢了。 我们可以...

2018-05-05 16:38:07

阅读数 58

评论数 0

bzoj4571 [Scoi2016]美味(主席树+按位贪心)

考虑如果没有+x,那么直接可持久化Trie+按位贪心即可。 有+x怎么办呢?我们考虑在Trie树上跑的过程,实际上每次选择时就是看一个区间内有没有数。那么我现在就是要把这个区间左移x位即可。用主席树模拟Trie树的这一过程即可。 复杂度O(nlogn+mlog2n)O(nlogn+mlog^2...

2018-04-27 13:39:48

阅读数 89

评论数 0

bzoj3218 a + b Problem(主席树优化建图+最小割)

首先我们考虑朴素建图,S->i,bi ; i->T,wi ; i->i’,pi ; i’->j,inf,如果j会使得i变奇怪。 但是这样最后一类边可能O(n2)O(n^2),gg 我们考虑主席树优化即可。 点数O(2n+nlogn)O(2n+nlogn) 边数O(2n...

2018-04-27 08:52:20

阅读数 136

评论数 0

bzoj3681 Arietta(dsu on tree+主席树优化建图+网络流)

显然就是个建图最大流。然而边数爆炸。 我们考虑每个节点维护一棵线段树表示子树信息来优化建图,然后边数还是爆炸。 我们再考虑树上建主席树来优化建图,不错,好像可以了,然而子树信息不可减(维护的是权值为x的点的标号)gg这时候我们要用到一种黑科技:dsu on tree! 也就是树上启发式合并。...

2018-04-26 21:50:17

阅读数 108

评论数 0

bzoj3207 花神的嘲讽计划Ⅰ(hash+主席树)

因为K是固定的,我们把原串的所有长度为K的子串都hash了。 每次查询就相当于在区间内询问一个数是否存在。可以主席树来搞一搞,也可以离线莫队什么的。。。

2018-03-19 21:31:02

阅读数 94

评论数 0

bzoj1146 [CTSC2008]网络管理(树上主席树,树状数组套动态加点线段树)

给定一棵树,查询路径第k大值,带修改。 就是bzoj2588+bzoj3196 树上建主席树。然后对于修改,修改点x的权值,只会对x的子树有影响,而x的子树在dfs序上是连续的一段in[x],out[x],就相当于区间修改,我们利用差分+树状数组来维护,另建bit+动态加点线段树来维护。 树...

2018-02-26 20:45:05

阅读数 134

评论数 0

bzoj3196 Tyvj 1730 二逼平衡树(树套树,线段树套splay/bit套动态开点线段树)

线段树套splay,看网上题解大部分说套splay是过不去的,需要优越的姿势才可以,本想着过不去再卡一卡优越的姿势的,然而过了qaq。 线段树维护区间,对于线段树的每个节点我们吊一棵splay维护区间内的权值。 操作1:查询k在区间[l,r]上的排名。 线段树上查询区间,去splay上查询小...

2018-02-25 22:27:11

阅读数 189

评论数 0

bzoj3065 带插入区间K小值(替罪羊树套动态开点线段树)

替罪羊树呢就是不用旋转的平衡树,那不旋转如何维持平衡呢?我们设定一个α\alpha值,每当一个点不满足大小平衡时我们就暴力重构那一部分。用平衡树维护区间位置,每个节点一棵权值线段树。查询的时候我们就把x~y区间搞出来(用一堆权值线段树和单点表示),然后类似主席树求第k小的去树上二分找一下即可。此题...

2018-02-24 22:11:08

阅读数 203

评论数 0

bzoj4012 [HNOI2015]开店(动态点分治+二分+STL/树链剖分+主席树)

如何求所有点到一个点的距离和呢?类似bzoj3924我们的处理方法。 对于每个节点x维护 s1[x]–x的子树中的点到x的距离 s2[x]–x的子树中的点到fa[x]的距离 然后logn的在重心树上跳一跳,减去重复的,补上少的即可。 这题还有一个年龄的限制,怎么办呢?很容易想到线段树,但...

2018-02-23 23:42:18

阅读数 163

评论数 0

AtCoder Regular Contest 068

AtCoder Regular Contest 068 题目链接: https://arc068.contest.atcoder.jp/ C.X: Yet Another Die Game(结论题) D.Card Eater(结论题) E.Snuke Line(思路+主席树) 我们考虑...

2017-12-20 09:59:58

阅读数 195

评论数 1

bzoj3551 [ONTAK2010]Peaks加强版(kruskal重构树+dfs序+主席树+树上倍增)

题意同bzoj3545,只不过强制在线了。那强制在线了怎么搞呢x,有一个神奇的东西,kruskal重构树,张这个样子:传送门。他有很多优美的性质:首先,他一定是一颗二叉树,然后所有叶子节点一定是原图中的点,从叶子节点往跟走,点权一定是单调不降的。如果原图中有n个点,则这棵树一定有n+n-1个点(因...

2017-12-04 19:31:04

阅读数 186

评论数 0

bzoj3545 [ONTAK2010]Peaks(离线+kruskal+主席树+线段树合并)

首先我们可以离线做。把询问按x排序,给每个点建一棵权值线段树。然后一边跑mst,一边维护线段树。每次合并两个点的时候,就要合并两棵线段树。合并的时候要小心因为合并叶子时不能pushup,所以还是每次相加比较稳妥。然后合并的总复杂度应该就是合并时删掉的节点数,是O(nlogn)的,可以接受。所以总复...

2017-12-03 21:12:56

阅读数 176

评论数 0

bzoj1901 Zju2112 Dynamic Rankings(主席树+树状数组)

带修改的主席树。回忆我们求区间第k小的怎么求?我们实质上是用两个前缀和去减。那现在有了修改,说明我们需要维护前缀和。那什么东西可以用来快速的维护前缀和呢?树状数组。也就是说我们每次在树状数组上跑,更新logn棵线段树的值。每颗线段树维护树状数组相应的区间信息。然后我们查询的时候,按树状数组那样记下...

2017-12-02 21:33:19

阅读数 147

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭