SuccessorTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 2631Accepted Submission(s): 634Problem De...
分类:
其他好文 时间:
2014-12-06 19:27:08
阅读次数:
194
题目大意:给定一棵有根树,提供下列操作:
1.询问某个点到根路径上的点权和
2.修改某个点的父亲,保证修改之后仍然是一棵树
3.将某个点所在子树的所有点权加上一个值
子树修改,LCT明显是搞不了了,在想究竟会不会有人去写自适应Top-Tree……
首先我们DFS搞出这棵树的入栈出栈序 然后入栈为正出栈为负
那么一个点到根的路径上的点权和就是从根节点的入栈位置到这个点的入栈位置的和
子...
分类:
其他好文 时间:
2014-12-01 17:41:14
阅读次数:
139
树上的莫队算法。。。话说糖果公园也是的说?、、、蒟蒻不会233先搞出dfs序,然后对dfs序直接莫队就好了。。。但是写的我蛋疼啊。。。3h就一道题还让不让人活? 1 /************************************************************** 2.....
分类:
移动开发 时间:
2014-11-27 20:21:29
阅读次数:
241
题目大意:给出一棵树,问任意两点之间有多少种不同的颜色,一个人可能会有色盲,会将A和B当成一种颜色。
思路:比较裸的树上莫队,写出来之后,很慢,怀疑是分块的缘故,然后果断找了当年比赛的标称交上去,瞬间rk1,大概看了一眼,他好像是直接用DFS序+曼哈顿距离最小生成树搞的,为什么会比分块快?
昨天下午看到这个题之后就一直在研究树上莫队的正确姿势,然后先写了树分块,后来看了很多牛人的SPO...
分类:
移动开发 时间:
2014-11-25 10:56:58
阅读次数:
248
题目大意:给出一棵树,一开始每两个点之间都是由土路连接的,但是会有一些土路逐渐变成公路,问每次从点1开始到点k有多少土路。
思路:POI不怎么难的题,实际上每个点到1的土路的数量就是这个点的深度,在土路变成公路的时候,这个点以及子树的所有节点的深度都要-1,子树修改就很基本了,可以用DFS序+fenwick,当然要是不嫌麻烦也可以树链剖分,但是常数会比较卡。。
CODE:
...
分类:
编程语言 时间:
2014-11-23 14:33:43
阅读次数:
197
题意:给定点数nn扫描1遍,然后用一个树状数组维护前缀和即可。。 到了本题利用dfs序显然就可以转化成线性模型, 具体的话 做到点u, 如果有一个操作1在(u, fa[u])的边,时间为t,那么在t时间点删除一个点 如果有一个操作2在u点,时间为t,那么就等价于查询1~u路...
分类:
其他好文 时间:
2014-11-13 00:34:28
阅读次数:
248
Problem Description
After June 1st, elementary students of Ted Land are still celebrating "The Sacred Day of Elementary Students”. They go to the streets and do some elementary students stuff. So w...
分类:
其他好文 时间:
2014-10-31 17:24:03
阅读次数:
234
题目大意:给出一个森林,每个节点都有一个权值。有若干加边操作,问两点之间路径上的第k小权值是多少。
思路:这题和COT1比较像,但是多了连接操作。这样就只能暴力合并连个树。启发式合并会保证时间复杂度不至于太大。然后就是用可持久化线段树维护一个树的信息,按照dfs序来建树,每个节点的可持久化链的参考版本就是它父亲的版本。之后利用权值线段树可区间加减的特性,用f[x] + f[y] - f[...
分类:
其他好文 时间:
2014-10-21 10:26:39
阅读次数:
265
续上个unkown,这里mark一下,接下来觉得还有可能考到,且自己不会的东西(或不太会)数学方面: 随机化,概率,简单的几何计算,杂七杂八的数论,组合数学中的差分,康托展开,高斯消元,线性规划树: 最近公共祖先,树上倍增,DFS序列,树链图: 差分约束!强连通分量,欧拉回路字符串: tries树!...
分类:
其他好文 时间:
2014-10-16 16:09:22
阅读次数:
174
题目大意:有一颗长满苹果的苹果树,有两个操作。
1.询问以一个点为根的子树中有多少个苹果。
2.看看一个点有没有苹果,如果没有苹果,那么那里就马上长出一个苹果(= =!);否则就把那个苹果摘下来。
思路:进行一次深搜,将每个节点最开始出现的时间和最后出现的时间记在一个数组里,那么这两点之间的点就是它以及它的子树的二倍,然后就用树状数组来维护区间和就行了。
CODE:
...
分类:
移动开发 时间:
2014-10-16 12:08:52
阅读次数:
200