
树链剖分
吴俊达9812
这个作者很懒,什么都没留下…
展开
-
spoj Qtree1
说几个需要注意的问题:1.多组样例时初始化问题首先 lca 的 f 数组和 根的 d 值需要初始化其次,树剖的son值和num需要初始化2.把边赋给点时需要注意的问题首先,根节点对应的边应该注意赋初值其次,线段树是对编号之后的树进行建树,应该注意。最后,因为lca的边不应该被算上,所以处理方式和点的不太一样,注意一下。#include<bits/stdc++...原创 2019-06-25 11:47:59 · 170 阅读 · 0 评论 -
焦作网络赛 E.Jiu Yuan Wants to Eat
更新了板子,原来的常数太大了这里取反运算是对 64 位全部取反,相当于 *(-1) + 2e64-1 = *( 2e64-1 )+2e64-1还有一个问题就是先乘后加可以拆分成 乘 和 加,这样可以降低代码长度坑点:unsigned long long 读入和输出都是是%llu#include <bits/stdc++.h>#define lc l,mid,x...原创 2019-06-25 20:15:08 · 208 阅读 · 0 评论 -
2019中国大学生程序设计竞赛 Tree
树剖,维护区间最大值以及区间和,最大值为1的时候就不需要下传更改了。#include<bits/stdc++.h>#define lc l,mid,x<<1#define rc mid+1,r,x<<1|1using namespace std;typedef long long LL;typedef int lint;const lint ...原创 2019-07-14 18:10:55 · 291 阅读 · 0 评论 -
hdu 6612 Sindar's Art Exhibition
思路:列出求和的表达式,然后用树状数组进行维护。这题使我明白了树链剖分的意义在于将节点重新标号,然后使得重链的节点标号连续,这样可以将树的查询问题转化为多个区间查询问题子问题,这样我们考虑问题的时候只需要考虑区间查询即可。坑点:模数为1e9 + 7 输入的范围却为 2e9。输入之后一定要取模。#include <bits/stdc++.h>using namespace ...原创 2019-08-08 22:50:16 · 258 阅读 · 0 评论