第一种做法(时间太感人):这题我真的逗了,调了一下午,疯狂造数据,始终找不到错。后来发现自己sb了,更新那里没有打id,直接套上u了。我。。。。调了一下午啊!一下午的时光啊!本来说好中午A掉去学习第二种做法,噗好吧,现在第一种做法是hld+seg+bst+二分,常数巨大,log^4级别,目前只会这种...
分类:
Web程序 时间:
2014-08-20 21:02:52
阅读次数:
357
利用树的dfs序解决问题:就是dfs的时候记录每个节点的进入时间和离开时间,这样一个完整的区间就是一颗完整的数,就转化成了区间维护的问题。比如hdu3887 本质上是一个求子树和的问题 1 #include 2 #include 3 #include 4 #include 5 #i...
分类:
其他好文 时间:
2014-08-12 08:59:33
阅读次数:
261
UVA 10410 - Tree Reconstruction
题目链接
题意:给定一个树的dfs序列和bfs序列,求出这颗树
思路:拿dfs的序列,分成若干段,每一段相当一个子树,这样就可以利用bfs的序列去将dfs的序列分段,然后利用一个队列去存放每一段,不断求出子树即可。一开始以为parse tree一定是二叉树,原来不一定啊。
代码:
#include
#i...
分类:
其他好文 时间:
2014-07-27 11:49:23
阅读次数:
155
题目链接:点击打开链接
题意:
给定n个节点的树
1为根
则此时叶子节点已经确定
最后一行给出叶子节点的顺序
目标:
遍历树并输出路径,要求遍历叶子节点时按照给定叶子节点的先后顺序访问。
思路:
给每个节点加一个优先级。
把最后一个叶子节点到父节点的路径上的点优先级改为1
把倒数第二个叶子节点到父节点的路径上的点优先级改为2
如此每个点就有一个优先级,每个访问儿子节...
分类:
其他好文 时间:
2014-07-06 10:11:10
阅读次数:
193
题目链接:点击打开链接
题意:
给定n个点,m个询问的无向树(1为根)
下面n个数表示每个点的权值
下面n-1行给出树
操作1:x点权值+v, x的第 i & 1 的儿子-v, 第 !(i&1) 的儿子+v
操作2:询问x点权值
dfs把树转成序列
根据深度把点分成2组
分别用线段树维护。。
然后Y一下
#include
#include
#include
#include
...
分类:
其他好文 时间:
2014-06-25 08:41:42
阅读次数:
239
Description我们知道一棵有根树可以进行深度优先遍历(DFS)以及广度优先遍历(BFS)来生成这棵树的DFS序以及BFS序。两棵不同的树的DFS序有可能相同,并且它们的BFS序也有可能相同,例如下面两棵树的DFS序都是1 2 4 5 3,BFS序都是1 2 3 4 5现给定一个DFS序和BF...
分类:
其他好文 时间:
2014-06-18 09:41:13
阅读次数:
173
1.易知,树上两点的距离dis[u][v] = D[u]+D[v]-2*D[lca(u,v)] (D为节点到根节点的距离)2.某条边权值一旦改变,将会影响所有以v为根的子树上的节点到根节点的距离,很明显,DFS一遍后以v为根的子树在DFS序列中是连续的一段,及转化为区间更新问题,可以用树状数组。做法...
分类:
其他好文 时间:
2014-06-15 11:42:02
阅读次数:
213
单点修改树中某个节点,查询子树的性质.DFS序
子树序列一定在父节点的DFS序列之内,所以可以用线段树维护. 1: /* 2: DFS序 +线段树 3: */ 4: 5: #include 6:
#include 7: #include 8: #include 9: #include 10: #in...
分类:
其他好文 时间:
2014-05-12 20:15:56
阅读次数:
317