码迷,mamicode.com
首页 >  
搜索关键字:启发式合并    ( 251个结果
CF549F(分治+启发式合并)
这道题的初始思路可以看的出来 是一道分治的思想,这种题往往枚举端点计算贡献 而这一题因为有个最大值的限制,所以我们考虑维护每个点作为最大值的答案 那么一般来说,都是在区间内,枚举首位,然后二分答案,但是这样复杂度会退化,例如一个很长的递增子序列 因此我们考虑启发式合并,前缀和后缀哪边小枚举哪边,这样 ...
分类:其他好文   时间:2021-05-03 12:20:44    阅读次数:0
CF208E Blood Cousins(树上启发式合并)
转化题目,题目要求的是K级祖先,我们可以对于每个询问先跳到祖先,那么就是求对于这个祖先,depth[u]+k的个数是多少个,然后-1就是答案 #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair ...
分类:其他好文   时间:2021-04-24 13:41:24    阅读次数:0
P5979 [PA2014]Druzyny dp 分治 线段树 分类讨论 启发式合并
LINK:Druzyny 这题研究了一下午 终于搞懂了. $n^2$的dp很容易得到. 考虑优化.又有大于的限制又有小于的限制这个非常难处理. 不过可以得到在限制人数上界的情况下能转移到的最远端点 且这个数组是单调的. 而下界是随意的. 这个可以利用单调队列做 也可以暴力线段树. 然后考虑怎么优化 ...
分类:其他好文   时间:2020-07-28 22:54:01    阅读次数:115
启发式合并
启发式合并 概念 启发式算法是基于人类的经验和直观感觉,对一些算法的优化。 作用 可以启发式合并更加高级的数据结构,如 \(heap,~set,~splays\) 等 复杂度计算 每次把个数少的合并到个数多的?复杂度 \(O(min(m1,m2))\) 可是我们注意到,每次合并后个数为合并前少的部分 ...
分类:其他好文   时间:2020-07-19 18:00:25    阅读次数:69
树上启发式合并/dsu on tree
树上启发式合并/dsu on tree 前置芝士 启发式合并和树链剖分的部分知识。(不会的去这里搜) 因为要在一颗树上进行启发式合并,所以要找最优的方法,即优雅的暴力(雾 它可以让 \(O(n^2)\) 变为 \(O(n\log n)\) (证明 你就想想启发式合并就完了) 概念 树上启发式合并(d ...
分类:其他好文   时间:2020-07-19 17:59:35    阅读次数:75
线段树合并
线段树合并 前置芝士 动态开点线段树和权值线段树 乍一看,线段树合并和上面那两个奇怪的东西有什么关系。 其实,线段树合并的全称为动态开点权值线段树合并( 雾 如果对上面那两个奇怪的东西不理解可点开链接进行搜索(大雾 优点 ? 动态开点线段树有着一些优点,比如说当你让某个节点继承另一个节点的左儿子或者 ...
分类:其他好文   时间:2020-07-19 16:32:06    阅读次数:90
【CF600E】Lomset gelral 题解(树上启发式合并)
题目链接 题目大意:给出一颗含有$n$个结点的树,每个节点有一个颜色。求树中每个子树最多的颜色的编号和。 树上启发式合并(dsu on tree)。 我们先考虑暴力怎么做。遍历整颗树,暴力枚举子树然后用桶维护颜色个数。这样做是$O(n^2)$的,显然会T。我们需要一种更快的算法:树上启发式合并。 关 ...
分类:其他好文   时间:2020-07-17 22:21:39    阅读次数:58
树上启发式合并(dsu on tree)
\(dsu\ on\ tree\) 是一个树上优化暴力,在统计每个子树信息的时候可以做到 \(O(nlogn)\) 大致思路:先轻重链剖分,然后统计每棵子树信息的时候先递归所有轻儿子(回溯时清空信息),最后递归重儿子(回溯时不清空信息)。 最重要的就是时间复杂度分析了吧(其实非常简单):我们发现一个 ...
分类:其他好文   时间:2020-06-25 12:21:45    阅读次数:62
dsu on tree
这么简单的东西我现在才学,血亏... on tree大家都能翻译过来。至于dsu,大概就是并查集的意思吧。 但是这并不代表并查集上树了,只是代表用到了启发式合并的思想。 进入正题: 我们有一颗树,有对于子树的询问。这种题暴力就是遍历每个节点的子树中的所有信息暴力统计出来更新答案,然后消除该节点的贡献 ...
分类:其他好文   时间:2020-06-24 22:00:15    阅读次数:46
keoj226 翻转
keoj226 正解 把每一行当成一个字符串插入 trie 树。 对于一个左端点, trie 树上相同的节点表示一类相同的字符串(用 set 记录等价类)。 左端点往右边移动怎么做呢 ? 重新插入 trie 树 ? 类似线段树合并的 trie 树合并 + set 启发式合并即可。 复杂度顶满是所有的 ...
分类:其他好文   时间:2020-06-08 20:56:06    阅读次数:94
251条   1 2 3 4 ... 26 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!