树链剖分
文章平均质量分 80
Lazines_by
好吧,我要工作了
展开
-
树链剖分
转载自:http://blog.csdn.net/bobodem/article/details/52330316 “在一棵树上进行路径的修改、求极值、求和”乍一看只要线段树就能轻松解决,实际上,仅凭线段树是不能搞定它的。我们需要用到一种貌似高级的复杂算法——树链剖分。 树链,就是树上的路径。剖分,就是把路径分类为重链和轻链。 记siz[v]表示以v为根的子树的节点数,dep[v]转载 2018-01-23 09:32:46 · 144 阅读 · 0 评论 -
code forces 343D 树链剖分
第一次没有用模板写树链剖分,感觉爽爽的。‘ 题意:根节点为1的树上有三种操作: 1.将u和它的所有孩子节点置1 ;2.将u和它的所有祖先置0 ;3.查询u节点是0还是1 思路:一操作相当于将u和它的子节点这个区间所有的值进行更新,在代码中显示为[ id[u],R[u] ]。二操作相当于更新1到u的这条链上的节点的值,不过不一定在一个连续的区间内,所以需要树链剖分,分成很多连续的子区间,进原创 2018-01-23 10:40:58 · 234 阅读 · 0 评论 -
FZU2082(树链剖分边操作)
题比较简单,直接粘代码吧 #include #include #include #include using namespace std; const int maxn = 100000 + 10; typedef long long ll; #define clr(x,y) memset(x,y,sizeof x) #define INF 0x3f3f3f3f const ll Mod = 1原创 2018-01-26 16:04:55 · 245 阅读 · 0 评论