
启发式合并
LowestJN
强省弱OIer
展开
-
[BZOJ3510][启发式合并][LCT维护子树信息]首都
题意略…(今天比较懒)由于只有建造公路没有破环公路,所以可以用启发式合并保持操作数为log,暴力拆开小的联通块,用LCT插到大的联通块内,然后用LCT维护子树信息,具体看这里#include <cstdio>#include <iostream>#include <algorithm>#define N 300010using namespace std;int n,m,rt[N],g[N],原创 2017-02-15 18:41:54 · 1022 阅读 · 0 评论 -
[BZOJ2733][HNOI2012][启发式合并][平衡树]永无乡
题意给定n个点,每个点有权值,操作会联通某两个点的联通块,或询问某联通块中的第k大的点。对每个点维护一个平衡树,对于联通的操作启发式合并,把size小的树每个点暴力拆开,插入到size大的树中。#include <cstdio>#include <iostream>#include <cstdlib>#include <algorithm>#define N 200010using name原创 2017-02-15 18:26:50 · 671 阅读 · 0 评论 -
[BZOJ3545][ONTAK2010][平衡树][STL][启发式合并]Peaks
STL tree练习题两个坑点BZOJ上编译器版本较低,定义tree的时候null_type要改成null_mapped_type讲道理splay_tree_tag要快一点,毕竟总复杂度是nlogn然而在BZOJ一直T,改成rb_tree_tag就过了……据说ov_tree_tag也过不了其他的就跟普通的平衡树启发式合并一样做就好了#include <cstdio>#include <ios原创 2017-03-23 21:44:03 · 1020 阅读 · 0 评论 -
[BZOJ3473][后缀自动机][启发式合并]字符串
首先建立广义自动机对于自动机上的每一个节点,开一个set,记录它能接受的所有子串的编号(不要用multiset,会出现重复的编号),然后在fail树上dfs求出从根节点到当前节点这条路径代表的子串出现在几个字符串中(利用fail树的性质),只有对于每个节点启发式合并它的所有儿子的set就行了#include <cstdio>#include <iostream>#include <algorit原创 2017-03-15 17:49:51 · 1075 阅读 · 0 评论 -
[AtCoder AGC014 .E][杂题]Blue and Red Tree
题意给一棵树,初始每条边都是蓝色的,你可以选择一条全是蓝色的路径,删去其中的一条边,然后给这条路径的两个端点连上一条红色的边。给出两棵都是N个点的树,问是否存在一种方案使第一棵树变成第二棵树。挺好的题操作可以看成:选择一条蓝色的边删去,原来的树会变成两棵没有交集的树T1,T2,然后分别在T1,T2中选择一个点,连上红色的边,递归处理T1,T2考虑递归到最后,会剩下两个点,那么这两个点在原来的树中存在原创 2017-05-07 16:02:02 · 943 阅读 · 0 评论 -
[BZOJ4919][Lydsy六月份月赛 .C][树上DP][启发式合并]大根堆
用f[i][j]表示第i个节点,最大的为j且满足条件的大根堆的大小 现场写了一个很鬼畜的线段树合并DP数组……一直RE加上时间不够就弃疗了 不过好像是有类似的做法,先挖个坑……题解很妙啊,考虑链上的情况就是求LIS,求LIS可以用f[i]表示长度为i的子序列的最大是多少然后二分维护,那么放到树上同样可以做,用set维护。子树之间互不影响,直接启发式合并,父节点在子树合并得到的set中找到第...原创 2017-06-25 16:53:08 · 1560 阅读 · 2 评论 -
[树上启发式合并 && 哈希] Codeforces 741D. Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths
日常VP翻车学一发树上启发式合并,%%%gjghfd 树上启发式合并可以截这里每次递归做轻儿子,做完后清空轻儿子信息(注意是做完一个轻儿子后发现清空这个),然后做重儿子,再dfs所有轻儿子并跟新当前点的答案,然后把轻儿子信息加进去……说起来很绕,其实挺好理解的… 每个节点的哈希值就是它到根路径哪些字符出现奇数次,记录就是记录每个哈希值的深度的最大值,然后类似求路径长度搞一搞就好了#include原创 2017-08-27 20:43:21 · 872 阅读 · 0 评论 -
[启发式合并 DP] Atcoder ARC086E. Smuggling Marbles
比赛的时候想到了每层独立,但是不会搞…官方题解好像学到了关于深度的信息启发式合并的次数是 O(n)O(n) 的… 还有deque这种神奇的东西……像我以前都是set加上各种外层的标记……果然还是太弱了#include <cstdio>#include <iostream>#include <algorithm>#include <queue>using namespace std;typed原创 2017-12-11 20:37:41 · 1040 阅读 · 0 评论 -
[dsu on tree] BZOJ5040. 未来研究
原题好像是莫队加点技巧O(nn√)O(n\sqrt n),我用莫队加配对堆搞过去了…这题因为区间不交叉,根据包含关系可以建出一棵树,然后就相当于求子树的信息,可以用启发式合并,但是这样可能会多一个log,那么就用dsu on tree了 #include <cstdio>#include <iostream>#include <algorithm>using namespace std;type原创 2017-12-26 13:11:52 · 480 阅读 · 0 评论