treap
文章平均质量分 83
KsCla
这个作者很懒,什么都没留下…
展开
-
poj1741:Tree (树上点分治/treap+启发式合并)
问题描述:给定一棵N个结点的带权树, 问有多少条路径使得它的长度题目分析:……本题是我第一次敲树上点分治,AC了有一点小激动,但代码可能还不是很正规……好吧先来讲讲做法,有点像CDQ分治。我们只要每一次求出以root为根的子树中有多少路径经过了root且长度v的路径就可以被统计进答案。注意u==root或v==root的情况要小心。于是我们对子树的dep从小到大排个序,然后利用单调,记原创 2016-12-14 17:30:10 · 1383 阅读 · 0 评论 -
Codeforces Round #445 Div1 E:Mod Mod Mod (平衡树优化DP)
题目传送门:http://codeforces.com/contest/889/problem/E题目大意:有一个长度为n的序列a。定义函数f(x,n)f(x,n)值为xmodanx \mod a_n。并定义函数f(x,i)(1<=i<n)f(x,i)(1<=i<n)值为xmodai+f(xmodai,i+1)x \mod a_i+f(x \mod a_i,i+1)。求最大的f(x,1)f(x,1)原创 2017-12-17 20:42:28 · 733 阅读 · 0 评论 -
BZOJ4771:七彩树 (LCA+Treap+可持久化线段树)
题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4771题目分析:一道很妙的题。先简化问题:假设没有深度限制,问题就变成了一棵子树中本质不同的颜色个数。只要将DFS序搞出来,就变成了一段区间中不同的数的个数,这个直接用可持久化线段树就可以解决了。有深度限制怎么办呢?我们可不可以按深度顺序将这些点加入主席树呢?答案是不可以的。因为以深度为顺序原创 2017-10-16 14:11:33 · 1091 阅读 · 0 评论 -
洛谷P1081:开车旅行 (Treap+倍增)
题目传送门:https://www.luogu.org/problem/show?pid=1081题目分析:这题的两个问其实是差不多的。第一问给出了X0,我们枚举起点s,就相当于变成了n个第二类询问(s,X0)(1<=s<=n)(s,X0)(1<=s<=n)。于是现在原问题变成了:给出(s,x),如何快速求s开始往下走不超过x距离时,A,B各走的距离?然后用数据结构预处理出A,B到达每一个点之后会走原创 2017-09-29 21:29:24 · 410 阅读 · 3 评论 -
BZOJ1492:[NOI2007]货币兑换Cash (CDQ分治+斜率优化DP/平衡树维护凸壳)
题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1492题目分析:被一道水题坑了两天…… 首先朴素的O(n2)O(n^2)的DP是很好想的:记f[i]表示第i天不持有任何金券所能获得的最多人民币,很明显f[i]可以由f[i-1]更新而来(就是在1~i-1天就已经卖完所有金券,然后第i天不进行任何操作),还可以枚举一个j,看一下在第j天买入原创 2017-09-02 12:02:13 · 1604 阅读 · 0 评论 -
BZOJ3295:[Cqoi2011]动态逆序对 (BIT套treap/CDQ分治+BIT)
题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3295题目分析:这题裸的树套树啊。我们先算出原序列的逆序对数量,当一个数被删除的时候,逆序对的减小量=此时在它前面的比它大的数的个数+此时在它后面的比它小的数的个数。于是我们用一个树状数组套平衡树就可以搞定了。CODE(BIT+treap):#include<iostream>#inclu原创 2017-08-13 20:20:39 · 401 阅读 · 0 评论 -
洛谷P3765:总统选举 (线段树+treap)
题目传送门:https://www.luogu.org/problem/show?pid=3765题目分析:线段树好题!线段树好题!线段树好题!(重要的事情说三遍)在你做这一道题之前,你需要知道一道弱化版的题目的解法:http://www.lydsy.com/JudgeOnline/problem.php?id=2456少女思考中……原创 2017-05-22 15:10:01 · 571 阅读 · 1 评论 -
hdu3726:Graph and Queries(treap+启发式合并+离线)
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=3726题目大意:给出一幅无向边构成的图,每个点有一个点权。有3种操作:删掉一条边,更改一个点的点权,以及查询一个点所在的连通块的第k大点权。分析:这里我们可以通过对每一个连通块维护一棵treap在log(n)的时间内完成操作2,3,至于操作1,我们发现分离比较难办,于是我们考虑离线读入,然后从原创 2017-04-17 22:07:29 · 960 阅读 · 0 评论 -
USACO 2013open :yinyang(treap+启发式合并)
题目大意:给出一颗树,由N个结点,编号1至N。有N-1条边,每条边都有1只奶牛,奶牛要么是黑毛奶牛,要么是白毛奶牛。从结点A走到结点B,如果不能走重复的边,那么这条路径是唯一的,这样的路径在图论里被称为“简单路径”。我们用(A,B)来表示从A走到B的这条简单路径。如果简单路径(A,B)同时满足以下3个条件,那么简单路径(A,B)被称为“平衡”的简单路径:至少存在一个结点C,结点C同时满足:原创 2017-02-23 19:56:17 · 1240 阅读 · 0 评论 -
bzoj1604:奶牛的邻居(treap)
【bzoj1604】[Usaco2008 Open]Cow Neighborhoods奶牛的邻居Description了解奶牛们的人都知道,奶牛喜欢成群结队.观察约翰的N(1≤N≤100000)只奶牛,你会发现她们已经结成了几个“群”.每只奶牛在吃草的时候有一个独一无二的位置坐标Xi,Yi(l≤Xi,Yi≤[1..10^9];Xi,Yi∈整数.当满足下列两个条件之一,两只奶牛i和j是属原创 2017-01-25 22:52:47 · 635 阅读 · 0 评论 -
学习笔记:treap
最近在学一种数据结构:treap,这意味着我再也不用调用stl库的multiset怕常数太大超时了(当然,有的时候编程时间不够还是用stl库好一点)。由于关于treap的详细而优秀的论文已经数不胜数,基本的操作就不说了。只是讲讲怎么编treap的问题。Treap我用三种方法各编了一次:不用指针,用指针但静态分配内存,指针加动态分配内存。这里讲一下前两种方法,第三种方法由于时间要比第二种方法慢一原创 2016-12-24 16:04:30 · 491 阅读 · 0 评论 -
SPOJ FTOUR2 (平衡树+启发式合并/点分治)
vjudge题面传送门:https://cn.vjudge.net/problem/SPOJ-FTOUR2题目大意:给出一棵n个节点的树,将其黑白染色。求经过不超过k个节点的路径权值和的最大值。n<=200000n<=200000nf[node][num]f[node][num]f[node][num]表示节点node向下走,经过刚好num个黑点的最大权值,转移的时候显然有: ...原创 2018-03-07 14:25:03 · 395 阅读 · 0 评论