E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
————启发式合并
【线段树合并+虚树/
启发式合并
/欧拉序】LOJ2722 NOI2018情报中心
【题目】原题地址给定一棵带边权树和树上的mmm条链,每条链有一个花费cic_ici,两条有边交的链的价值定义为:链并的边权和-两条链的花费。求最大价值。(需要用一个logloglog的做法)【题目分析】这题是SCSCSC在看,我跑过去凑热闹,然后我们搞了一个星期…\dots…两个部分都搞出了一个可行的做法,然后看题解…\dots…震惊,还能这样做。(update:如果有大佬能把第二个常数巨大的代码
Dream_Lolita
·
2018-09-26 14:55
数据结构-线段树
Tree-LCA相关
其他-虚树
机房模拟的日常20180922
日常机房模拟今天不是停课…所以所有人都来了有一道T1,本来想到了正解,结果忘了可以
启发式合并
,觉得时间复杂度过不去就否定掉了T2想了2个半小时,最后交了一个自己认为错的程序结果A了(下午发现是正解2333333
Amuseir
·
2018-09-22 18:09
dsu on tree入门
当时我想知道有没有比莫队更优的做法,和zbq讨论了半天也只能搞出一个$O(nlog^2n)$的平衡树
启发式合并
然后!!我就把这题出给校内互测了!!没错,当时是用莫队当的标算!结果!mjt用一
自为风月马前卒
·
2018-09-20 20:00
2018青岛网络赛G题
题解:这题用到一个
启发式合并
的思想,对于集合的
启发式合并
就是,对于两个集合合并,我们只将小的合并到大的,我们就可以让时间复杂度大大减小,如果将一个元素放进一个集合是O(l
Lgq_3de5
·
2018-09-17 21:06
Acm
主席树
启发式合并
鸿哥牛逼
往事 - SAM -
启发式合并
题目大意:给你个Trie,求两个从根出发的字符串(不一定要到达叶子),使得LCP+LCS(这个是最长公共后缀)最大。题解:建出SAM后,考虑parent树中每次合并两颗子树,启发式的把小的插到大的里面,显然每次插入的时候只会取dfs序的前驱和后继做LCA来更新答案。两个log。#include#include#include#include#include#include#include#defi
Mys_C_K
·
2018-09-06 16:22
广义后缀自动机
启发式合并
dsu_on_tree
大佬博客:https://codeforces.com/blog/entry/44351使用范围:常用来求子树的信息,比如,如果一棵树上每个节点都有一种颜色,求一个子树中颜色c的出现次数复杂度分析:这个就是
启发式合并
半世blue
·
2018-08-29 20:50
数据结构
HNOI2009 梦幻布丁
启发式合并
+队列
题解:
启发式合并
的神奇做法把同种颜色的布丁排成一列,变色时接在那个颜色的队列后面;同时要把短的队列接在长的队列后面。
DyingShu
·
2018-08-25 18:31
模拟
队列
HNOI2012 永无乡
题目链接:https://www.luogu.org/problemnew/show/P3224splay
启发式合并
模板,小splay往大splay插,感性理解,一个点最多插logn次,插一次logn,
DancingZ
·
2018-08-25 15:49
数据结构
splay
TeaTree(dfs +
启发式合并
)
Recently,TeaTreeacquirenewknoledgegcd(GreatestCommonDivisor),nowshewanttotestyou.Asweknow,TeaTreeisatreeandherrootisnode1,shehavennodesandn-1edge,foreachnodei,ithasit’svaluev[i].Foreverytwonodesiandj(
Cymbals
·
2018-08-22 21:59
ACM
启发式合并
LOJ - 516 DP 一般看规律 【set +
启发式合并
】
传送门题意:给你一个n个数的数组,由若干询问,每次询问把数组中所有值为x的改为y,求两个相同数最近的距离是多少.思路:维护一个map记录所有下标为x出现的位置,每次查找更新即可.ACCodemap>mp;intans=2147483647;voiddis(intid,intx){//更新答案autoit=mp[id].lower_bound(x);if(it!=mp[id].end())ans=m
Anxdada
·
2018-08-14 17:32
STL库的应用
【NOIP提高A组模拟2018.8.13】简单的区间(在线分治(树上
启发式合并
或 分治中心) 或 离线分治(主席树或桶))
5807.【NOIP提高A组模拟2018.8.13】简单的区间Problemn≤3∗105,k≤106n≤3∗105,k≤106Solution首先考虑分治.对于一个区间[l,r][l,r],我们考虑其中最大的数位置在mm,那么区间可以被分成两段,[l,m],[m+1,r][l,m],[m+1,r]那么这个时候考虑枚举小的那一段的位置,大的那一段可以离线处理,具体的,我们可以把问题转化为在大的那一
Algor_pro_king_John
·
2018-08-13 20:50
并查集中的
启发式合并
算法原理并查集一般有两种方法来保持复杂度不退化,一种是路径压缩,另一种则是按照秩来做
启发式合并
。
城东小路
·
2018-08-07 16:55
ACM
HDU 4358 - Boring counting
那么就可以直接DSUonTree或者
启发式合并
就好啦。我写的是
启发式合并
,每次记录一下当前点的当前枚举过的儿子的颜色集合,那么当前枚举儿子k,我们只要两个集合合并一下即可。
DYT_B
·
2018-08-07 14:19
题解
POJ
HDU
ZOJ
LOJ
Topcoder题解
hdu-4358:Boring counting(优美算法之树上
启发式合并
)
然后晚上回了宿舍就和室友在讨论,然后室友告诉我树上
启发式合并
随便做???当时一脸懵逼,树上
启发式合并
是什么鬼,其实个人对
启发式合并
还是有一点了解的。
呜喵汪
·
2018-07-31 21:22
启发式合并
[SDOI2013]森林,洛谷P3302,主席树+
启发式合并
正题一看到题目,就令人窒息。。。森林森林,也就是说一开始有很多棵树。然后要查找路径第k大。明显要找lca,就想到了树链剖分。每次往上跳把当前这一段记录下来,很明显要开n棵前缀主席树。然后再让找出来的op个区间相减(right-(left-1)),变成op个区间和op个区间相减。所以往下跳即可。问题就是加边要重建,而且你不知道你之前用过哪些编号。但是莫名水到30emm。而且时间复杂度也承担不起。想到
Deep_Kevin
·
2018-05-28 19:57
BZOJ 4919 大根堆
将节点x的子树
启发式合并
一下,然后找到第一个大于等于val[x]的值修改为val[x]即可。最后的答案就是s[1].size()。
Rayment_cc
·
2018-04-04 12:08
平衡树
BZOJ
[BZOJ4919]大根堆
启发式合并
+线段树/multiset
先考虑O(n2)O(n2)的DP,设fi,jfi,j表示考虑子树ii中,选的vv的最大值≤j≤j时最多能选多少个点,那么考虑一个点的转移。先合并儿子:fi,j=∑x∈sonifx,jfi,j=∑x∈sonifx,j在选上他自己:chkmax(fi,≥vi,fi,vi−1+1)chkmax(fi,≥vi,fi,vi−1+1)那么可以用线段树合并+区间覆盖操作搞定。还有一种基于multiset的做法。
DOFYPXY
·
2018-03-28 21:50
dp
数据结构
线段树
STL
启发式合并
HDU 1272 小希的迷宫 【并查集好题】
问给定的一幅图是否任意两点之间有且仅有一条路径.思路:首先一种比较笨的方法就是先并查集维护联通性,然后用dfs判断图是否有环,比较麻烦,但是也能过.,当然最好的方法就是用并查集也可以判环,当然你的并查集是用了
启发式合并
的
Anxdada
·
2018-02-27 11:35
(带权)并查集
[BZOJ][平衡树+
启发式合并
][替罪羊树]2733: [HNOI2012]永无乡
2733:[HNOI2012]永无乡TimeLimit:10SecMemoryLimit:128MBSubmit:4444Solved:2378[Submit][Status][Discuss]Description永无乡包含n座岛,编号从1到n,每座岛都有自己的独一无二的重要度,按照重要度可以将这n座岛排名,名次用1到n来表示。某些岛之间由巨大的桥连接,通过桥可以从一个岛到达另一个岛。如果从岛a
Axcosin
·
2018-02-05 17:44
平衡树
启发式合并
[dsu on tree] BZOJ5040. 未来研究
原题好像是莫队加点技巧O(nn√),我用莫队加配对堆搞过去了…这题因为区间不交叉,根据包含关系可以建出一棵树,然后就相当于求子树的信息,可以用
启发式合并
,但是这样可能会多一个log,那么就用dsuontree
LowestJN
·
2017-12-26 13:52
启发式合并
[
启发式合并
DP] Atcoder ARC086E. Smuggling Marbles
比赛的时候想到了每层独立,但是不会搞…官方题解好像学到了关于深度的信息
启发式合并
的次数是O(n)的…还有deque这种神奇的东西……像我以前都是set加上各种外层的标记……果然还是太弱了#include
LowestJN
·
2017-12-11 20:41
DP
启发式合并
[hdu 6191 Query on A Tree] 字典树
启发式合并
[hdu6191QueryonATree]字典树
启发式合并
分类:DataStructureTrieTree1.题目链接[hdu6191QueryonATree]2.题意描述有一个棵n个节点的树,每个节点上有一个权值
Xingw-Xiong
·
2017-11-08 13:13
ACM____数据结构
51nod 算法马拉松29 C题 美丽的集合
竟然有集合合并,那显然要
启发式合并
了,这样最多提出nlogn个元素。但是如果暴力01背包每次的复杂度是10^5,难以接受。注意到这个01背包非常特殊,它只要求是否能够凑成这个体积,所以这是一个布尔值。
Cold_Chair
·
2017-10-06 19:38
黑科技
51nod
启发式算法
[
启发式合并
] [模拟] [BZOJ5040] 未来研究
于是利用这个性质,就可以运用
启发式合并
HeRaNO
·
2017-10-04 18:43
模拟
启发式合并
51nod 1515 明辨是非 && 2017百度之星初赛第一场第二题(并查集+
启发式合并
)
题目:原题链接给n组操作,每组操作形式为xyp。当p为1时,如果第x变量和第y个变量可以相等,则输出YES,并限制他们相等;否则输出NO,并忽略此次操作。当p为0时,如果第x变量和第y个变量可以不相等,则输出YES,并限制他们不相等;否则输出NO,并忽略此次操作。n#include#include#definefo(i,x,y)for(inti=x;is[N*2];structnode{intx,
Cold_Chair
·
2017-09-21 12:37
并查集
51nod
启发式算法
【NOIP2017提高A组模拟9.14】生命之树 trie+
启发式合并
逐步往上计算每一个点的答案考虑建一些trie树,把二进制的每一个位挂在trie的一些节点上,那么我们就可以在遍历trie的同时把贡献式中的乘法转换为加法假设我们现在做到点i,那么我们就要把i点的儿子们对应的trie树合并,考虑用
启发式合并
❤1Marcus1❤
·
2017-09-15 22:05
启发式合并
HDU 6191 && 2017广西邀请赛:Query on A Tree(字典树
启发式合并
)
题意:有一棵n个节点的树,每个节点都有一个值,m次查询,每次两个数xy表示以x为根的子树中哪个节点权值异或y得出的结果最大,求最大结果离线和线段树合并一样,在搜索过程中将多个字典树并在一起每次查询遍历以当前子树的根为根的字典树01字典树:http://blog.csdn.net/jaihk662/article/details/53914904#pragmacomment(linker,"/STA
Jaihk662
·
2017-08-31 18:56
位运算
HDU - 6133 Army Formations(
启发式合并
+树状数组)
点我看题题意:给出n个结点,每个结点的信息长度为ai,每个结点发送信息的时间总和为自己发送的时间和加上其子树发完所有的信息,问每个结点发完信息所需要的最小时间。分析:认真的讲,首先要有一个贪心的思想,尽量让子树中信息较短的先发,这样其上面的结点所消耗的时间会比较少,这样,也就是要计算每个结点排序后的子树和了(当然最后的结果还是要加上自己),可以直接利用树状数组来维护。c++提交会TLE诶。参考代码
Vmorish
·
2017-08-18 16:36
数据结构--树状数组BIT
[BZOJ4919][Lydsy六月份月赛 .C][树上DP][
启发式合并
]大根堆
子树之间互不影响,直接
启发式合并
,父节点在子树合并得到的set中找到第一个大于等于
LowestJN
·
2017-06-25 16:08
DP
启发式合并
图论算法----并查集中的
启发式合并
一、
启发式合并
的算法原理一听这名字,感觉好高大上,实际上很简单。由于路径压缩在有些题目会损失海量的信息,用暴力并查集又要超时,所以就出现了
启发式合并
算法。
cqbzcsq
·
2017-02-25 11:32
C++
图论
数据结构
C++图论算法详解
[BZOJ3510][
启发式合并
][LCT维护子树信息]首都
题意略…(今天比较懒)由于只有建造公路没有破环公路,所以可以用
启发式合并
保持操作数为log,暴力拆开小的联通块,用LCT插到大的联通块内,然后用LCT维护子树信息,具体看这里#include#include
LowestJN
·
2017-02-15 18:54
LCT
启发式合并
[BZOJ3510][
启发式合并
][LCT维护子树信息]首都
题意略…(今天比较懒)由于只有建造公路没有破环公路,所以可以用
启发式合并
保持操作数为log,暴力拆开小的联通块,用LCT插到大的联通块内,然后用LCT维护子树信息,具体看这里#include#include
LowestJN
·
2017-02-15 18:54
LCT
启发式合并
[BZOJ3123][Sdoi2013]森林(主席树
启发式合并
)
题目描述传送门题解主席树的
启发式合并
裸题?坑点:①强制在线,但是我刚开始的时候ans里存的并不是答案,而是离散化之后的值,gg。②合并的时候lca数组要完全清空。
Clove_unique
·
2016-12-15 16:55
题解
线段树
省选
可持久化
启发式合并
bzoj 3123: [Sdoi2013]森林 (主席树+
启发式合并
+并查集)
3123:[Sdoi2013]森林TimeLimit:20SecMemoryLimit:512MBSubmit:2495Solved:747[Submit][Status][Discuss]DescriptionInput第一行包含一个正整数testcase,表示当前测试数据的测试点编号。保证1≤testcase≤20。第二行包含三个整数N,M,T,分别表示节点数、初始边数、操作数。第三行包含N个
clover_hxy
·
2016-12-14 19:22
并查集
主席树
[BZOJ3545][ONTAK2010]Peaks(splay
启发式合并
)
可以把各个连通块搞成一个个splay,连边的时候
启发式合并
,然后每一个询问在当前点所在的splay里找k大值就可以了。
Clove_unique
·
2016-12-11 18:25
题解
平衡树
启发式合并
[CF600E]Lomsat gelral
启发式合并
,轻链向重链合并。每个节点最多合并logn次。维护每种特征的个数,个数的特征值的和。
QAQ__QAQ
·
2016-12-05 20:00
codeforces
[51nod1743]雪之国度
考虑一个很强的方法,用LCT或
启发式合并
维护森林,动态维护双连通分量。因为不可能去持久化+二分求询问,我们可以再思考,每次将两个边双合并意味着一次集合合并,我们建一个新点,让原
WerKeyTom_FTD
·
2016-11-16 20:59
并查集
树上倍增
[51nod1743]雪之国度
考虑一个很强的方法,用LCT或
启发式合并
维护森林,动态维护双连通分量。因为不可能去持久化+二分求询问,我们可以再思考,每次将两个边双合并意味着一次集合合并,我们建一个新点,让原
WerKeyTom_FTD
·
2016-11-16 20:59
并查集
树上倍增
[BZOJ2809][Apio2012]dispatching(枚举&dfs序+主席树||可并堆||splay+
启发式合并
)
2°可并堆3°splay+
启发式合并
代码主席树#include #include #include #include usingnamespacestd; #defin
Clove_unique
·
2016-05-13 20:00
枚举
bzoj
apio
dfs序
主席树
bzoj 4569: [Scoi2016]萌萌哒
一种会T的做法:发现并查集加边只会发生n-1次,所以只要一个较小的复杂度完成这n-1次加边即可
启发式合并
维护并查集,每次暴力修改所有属于小区间的fa值,用vector记录每个连通块内的数,暴力在线段树内修改
heheda_is_an_OIer
·
2016-05-11 11:00
bzoj1483[HNOI2009]梦幻布丁 链表
启发式合并
题意:有两个操作1、将所有的x改成y2、求序列的颜色段如1221ans=2(m #include #defineN1001001 usingnamespacestd; intnum=0,n,m,ans=0; inta[N],head[N],next[N],sz[N],f[N]; voidinsert(intk){ num++; intt=head[k]; head[k]=num; next[num
yxr0105
·
2016-05-05 17:00
链表
bzoj
启发式合并
51nod 1515 明辨是非
启发式合并
1515明辨是非题目连接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1515Description给n组操作,每组操作形式为xyp。当p为1时,如果第x变量和第y个变量可以相等,则输出YES,并限制他们相等;否则输出NO,并忽略此次操作。当p为0时,如果第x变量和第y个变量可以不相等,则输出YES,并限制他们不相等
qscqesze
·
2016-05-05 16:00
[平衡树
启发式合并
] BZOJ 1483 [HNOI2009]梦幻布丁
用set水过的搬运下黄学长的复杂度分析吧,很有道理啊每次我们把短的合并到长的上面去,O(短的长度)咋看之下没有多大区别,下面让我们看看均摊的情况:1:每次O(N)2:每次合并后,队列长度一定大于等于原来短的长度的两倍。这样相当于每次合并都会让短的长度扩大一倍以上,最多扩大logN次,所以总复杂度O(NlogN),每次O(logN)。#include #include #include #inclu
u014609452
·
2016-05-02 13:00
2016 UESTC Training for Data Structures L - 郭大侠与苦恼 CDOJ 1284 map+
启发式合并
L-郭大侠与苦恼题目简单,就是给你一棵树,然后问异或值为0的简单路径有多少条好难,好麻烦,想了好久才想明白按dfs的顺序来map+
启发式合并
,后来想找个题的大概框架和树形01背包相似,都是用dfs来实现的
code12hour
·
2016-05-01 14:00
[置顶] 填坑计划
算法:数据结构类:并查集树上倍增树状数组线段树平衡树LCT主席树单调队列单调栈网络流Tarjan经典算法类:二分拓扑排序Hash线性规划(差分约束、单纯形)莫队分块三分cdq分治扫描线
启发式合并
DP类:
Clove_unique
·
2016-04-29 16:00
[poj1741]tree 解题报告
线段树/平衡树
启发式合并
的话,就是维护子树每个节点到子树跟的距离,打一个整棵子树的标记,然后按dfs/bfs序
启发式合并
,合并之前先查询一下答案即可。
TA201314
·
2016-04-21 17:00
线段树
平衡树
点分治
【弱校胡策】2016.4.19 LCA+LCT+莫比乌斯反演+SAM+
启发式合并
弱校胡策题解命题人:Loi_DQS2016.4.19前言来自出题人的吐槽:T1的题目来源是去年十月份做NOIP模拟题和lcyz(聊城一中)胡策(其实也不算胡策,从他们那里要的题)的T3,T2是去年五月份学长带着我们在tyvj举办的有奖赛(http://www.tyvj.cn/Contest/187andhttp://www.tyvj.cn/Contest/192)的某题。T3是上周六(2016.4
LOI_DQS
·
2016-04-19 20:00
bzoj 3307: 雨天的尾巴
如果不是用线段树的维护,也可以
启发式合并
这么搞。在x,y打上+1,lca(x,y)fa[lca(x,y)]
heheda_is_an_OIer
·
2016-04-13 16:00
BZOJ 3551 ONTAK2010 Peaks加强版 Kruskal重构树+可持久化线段树
题目大意:同3545强制在线3545题解传送门:http://blog.csdn.net/popoqqq/article/details/40660953强制在线没法排序
启发式合并
也就用不了了Kruskal
u014325920
·
2016-04-10 15:00
最小生成树
kruskal重构树
BZOJ 1483: [HNOI2009]梦幻布丁
链表的
启发式合并
O(nlogn)直接拿seter(233333)水多好#include #include #include usingnamespacestd; constintN=100000+5;
nlj1999
·
2016-03-30 19:00
上一页
1
2
3
4
5
6
7
8
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他