启发式合并
文章平均质量分 92
zxyoi_dreamer
退役了退役了爬了爬了,搞个锤子算法竞赛,不如好好享受大学生活。
展开
-
【JOISC 2020】【LOJ3277】【UOJ507】 星座(启发式合并)(笛卡尔树DP)
题解:首先容易注意到对一个点有影响的只有它向左右能看到的和向下能看到的。容易想到笛卡尔树上进行DP,开个set按高度排序,同时要求单调,DP合并启发式合并即可。上面是考虑分裂的做法,还有一种考虑合并的做法,要简单一点。从下向上考虑,相当于是一段区间要决定是否保留一个点,以及保留的代价,用并查集实现区间合并,用树状数组维护权值即可。代码:#include<bits/stdc++....原创 2020-04-02 17:02:04 · 359 阅读 · 0 评论 -
【JOISC 2020】【LOJ3257】【UOJ505】有趣的 Joitter 交友(启发式合并)
题解:结论很显然,双向连接的连通块会连成完全图,单向的会从前面向后连完整个连通块。维护一下那些连通块之间有边,哪些点连向了自己,合并启发式合并即可,注意连环合并的情况。代码:#include<bits/stdc++.h>#define ll long long#define re register#define cs constnamespace IO{ inli...原创 2020-04-01 21:08:51 · 310 阅读 · 0 评论 -
【JOISC 2020】【LOJ3273】【UOJ503】扫除(分治)(启发式合并)
题解:比较显然的分治,不过写起来细节有点多。而且第一次听说JOI居然还有卡常的情况,1e6跑两个log。考虑我们当前处理的所有点都满足 x≥sx,y≥syx\geq sx,y\geq syx≥sx,y≥sy,这样每次过 (sx,sy)(sx,sy)(sx,sy) 作斜率为 111 的直线,交三角形斜边的点作为分治点,接下来处理 (sx,py+1)(sx,py+1)(sx,py+1) 和 (p...原创 2020-04-01 20:16:13 · 299 阅读 · 0 评论 -
【CF 475F】Meta-universe(启发式分裂)
传送门题解:一个显然的结论是最终分裂出来的状态的分裂的中间操作没有关系。一个朴素的想法是按照两维排序之后扫一遍看是否有缺口。一个简单的优化是,排序用set,分裂从四个方向搞,每次启发式分裂把小的拿出去。十分好写,一发AC。代码:#include<bits/stdc++.h>#define ll long long#define re register#defin...原创 2019-09-26 15:20:54 · 873 阅读 · 0 评论 -
【BZOJ2780】Sevenk Love Oimaster(广义SAM)(set启发式合并)
传送门题解:显然是一个裸的广义SAM。问题在于求right集合的大小。我们知道广义SAM求right集合大小可以在建立完广义SAM后暴跳fail更新,也可以直接用set启发式合并。随便写写就好了,这种东西就是怎么开心怎么玩。代码:#include<bits/stdc++.h>#define ll long long#define re register#defin...原创 2019-09-24 20:24:45 · 166 阅读 · 0 评论 -
【LOJ6198】谢特(后缀自动机)(01Trie)(dsu on tree)
传送门题解:写完去看了一下正解,是后缀数组上按照height从大到小对01Trie启发式合并。然而建出后缀树直接把01Trie拿来dsu on tree岂不妙哉?没什么好说的,挺普通的一道题。代码:#include<bits/stdc++.h>#define ll long long#define re register#define gc get_char#d...原创 2019-07-27 14:27:24 · 229 阅读 · 0 评论 -
2019.01.17【BZOJ4399】 魔法少女LJJ(FHQ_treap)(ODT)
传送门解析:跟动态图屁关系没有,自己去读题啊,操作参数c≤7c \leq 7c≤7,没有最后两个断边的操作。思路:前777个显然都是平衡树随便做的东西吧,第六个稍微有点麻烦,不过只需要取一下对数就行了,就能化乘法为加法,double 就能存得下。然而这道题有什么需要说的呢?优化,以及卡常,作为BZOJ唯一两份卡进3s(目前)的代码之一的auther。我想说一些只能用在平衡树,而不能用...原创 2019-01-17 16:08:11 · 244 阅读 · 0 评论 -
2018.09.26【洛谷P3359】改造异或树(并查集)(启发式合并)
传送门解析:话说STLSTLSTL不开O2O2O2真的慢啊。。。开了O2O2O2跑得飞快。。。思路:首先是一个做多了题就懂的套路。要求一条一条地删边,我们就直接倒序加边。。。维护连通性是显然的并查集啊。话说异或为0怎么处理?这是一棵树啊。。。异或是自反的啊。。。那树上差分不就好了。。。随便选一个根。直接一趟dfsdfsdfs处理出所有点到根节点的异或距离。然后我们就知...原创 2018-09-26 20:26:55 · 194 阅读 · 0 评论