
启发式合并
KsCla
这个作者很懒,什么都没留下…
展开
-
poj1741:Tree (树上点分治/treap+启发式合并)
问题描述:给定一棵N个结点的带权树, 问有多少条路径使得它的长度题目分析:……本题是我第一次敲树上点分治,AC了有一点小激动,但代码可能还不是很正规……好吧先来讲讲做法,有点像CDQ分治。我们只要每一次求出以root为根的子树中有多少路径经过了root且长度v的路径就可以被统计进答案。注意u==root或v==root的情况要小心。于是我们对子树的dep从小到大排个序,然后利用单调,记原创 2016-12-14 17:30:10 · 1409 阅读 · 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 · 1274 阅读 · 0 评论 -
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 · 995 阅读 · 0 评论 -
BZOJ4025:二分图 ((CDQ分治+并查集)/LCT)
题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4025题目分析:这是一道LCT好题,同时一道CDQ分治好题啊,做了我整整一天……先说一下LCT的做法: 首先我们可以发现一个结论:对于一个偶环,如果不保存它的其中一条边,不会影响新的边加进来时对奇环的判断,但如果不保存两条边就会影响: 那就是说如果新加进来的边形成了一个偶环,我就不用原创 2017-08-10 14:56:46 · 1217 阅读 · 0 评论 -
2017"百度之星"程序设计大赛-初赛(A) 比赛总结
T1:小C的倍数问题(hdu6108)题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6108题目分析:最水的一题,考场上最多人AC。题目是要我们求有多少个B使得 a0Pk+a1Pk−1+……+ak−1P+ak=x1Ba_0P^k+a_1P^{k-1}+……+a_{k-1}P+a_k=x_1B 与 a0+a1+……ak−1+ak=x2Ba_0+a原创 2017-08-17 22:25:00 · 1042 阅读 · 0 评论 -
BZOJ4537:[Hnoi2016]最小公倍数 (分块+并查集+启发式合并)
题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4537题目分析:神题一道,一开始我YY了一下LCT,发现不可做,后来看了网上大神的做法发现是分块…… 由于2和3互质,所以我们可以看成一条边有两个属性a,b。先考虑暴力怎么做:对于一个询问(u,v,A,B),我们将所有a<=A,b<=Ba<=A,b<=B的边(a,b)加进并查集里,且在并查原创 2017-08-31 13:48:14 · 463 阅读 · 0 评论 -
hihocoder1629:Graph (分块+并查集)
题目传送门:http://hihocoder.com/problemset/problem/1629题目大意:给出一幅n个点,m条边的无向图,然后给出q组询问。每组询问给定一个区间[L,R],问[L,R]中有多少点对可以相互到达。可以到达的要求是只能走[L,R]中的点。不超过5组数据,n,m<=50000,q<=100000。题目分析:这题应该算是bzoj4537的弱化版吧。所谓分块,就是在暴力的基原创 2017-11-28 16:44:31 · 1035 阅读 · 3 评论 -
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 · 425 阅读 · 0 评论