11 2022 档案
摘要:操作 1 :把某个节点 x 的点权增加 a 。操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 a 。操作 3 :询问某个节点 x 到根的路径中所有点的点权和。 //点修改+树修改,(点->根)链查询 #include<bits/stdc++.h> #define ll long long
阅读全文
摘要:对权值作为维护对象而开的线段树,即每个点存的是区间内对应数字的某种值(出现的次数)。 权值线段树用于维护一个数在一个序列中出现的次数 比如数值1,1,2,2,2,3,4,5,6,7,8 初始每个节点为0 插入1 插入2 插入3 插入4 插入5 插入6 插入7 插入8 模板普通平衡树p3369题目描述
阅读全文
摘要:简单来说就是,你要用到一个点才开那个点,不用的点不开,可以大幅节省空间。这样空间复杂度可以大致降到O(nlogn)。是不是很棒。接下来是实现:一开始,你只有一个根节点。通过update函数往树里面插点,开两个数组记录每个节点的左右儿子编号。递归进入左右儿子,如果要用新点,就开新点。上代码(以区间和为
阅读全文
摘要:tarjan算法求LCA //tarjan算法 #include<bits/stdc++.h> using namespace std; const int maxn=5e5+10; vector<int> tre[maxn]; struct node{ int to; int id; }; vec
阅读全文
摘要:重链剖分 #include<bits/stdc++.h> using namespace std; const int maxn=3e4+10; struct node{ int to; int nxt; }E[maxn<<1]; int n,h[maxn],etot,tot,top[maxn],s
阅读全文
摘要:题目描述异或是一种神奇的运算,大部分人把它总结成不进位加法.在生活中…xor运算也很常见。比如,对于一个问题的回答,是为1,否为0.那么:(A是否是男生 )xor( B是否是男生)=A和B是否能够成为情侣好了,现在我们来制造和处理一些复杂的情况。比如我们将给出一颗树,它很高兴自己有N个结点。树的每条
阅读全文
摘要:问题描述 给定一棵有n个点的树(点的编号为1~n),根为1,点有点权,设点i的初始值为0,给出q个操作,每个操作给出两个点和一个值,u,v,t,表示将u到v的路径上的所有点加t,输出所有操作后每个点的点权,。 输入格式 第一行输入两个整数n,q表示树的点的数目与操作次数 下面n-1行,每行两个整数x
阅读全文
摘要:问题描述有一棵n个点的树,每个点i有点树v[i],q个询问求点u到点v最简路径上所有点权之和输入格式第一行n,q表示有n个点,q个询问第二行n个整数表示每个点的权下面n-1每行三个整数x,y,z描述边的信息及边长 下面q行每行两个整数u,v表示询问的两个点路径长度 输出q行,每行为u到v最简路径长度
阅读全文
摘要:问题描述有一棵n个点的树,每个点i有点树v[i],q个询问求点u到点v最简路径上所有点权之和输入格式第一行n,q表示有n个点,q个询问 第二行n个整数表示每个点的权 下面n-1每行两个整数x,y描述边的信息下面q行每行两个整数u,v表示询问的两个点 输出q行,每行为u到v最简路径上的点权和样例in5
阅读全文
摘要:简介二叉排序树(Binary Sort Tree)又称二叉查找树(Binary Search Tree),亦称二叉搜索树。二叉排序树或者是一棵空树,或者是具有下列性质的二叉树:1.若左子树不空,则左子树上所有结点的值均小于或等于它的根结点的值;2.若右子树不空,则右子树上所有结点的值均大于或等于它的
阅读全文
摘要:树链剖分前置知识:dfs序,splay树的区间操作1.重链剖分2.长链剖分3.实链剖分
阅读全文
摘要:二叉搜索树(BST树)前置知识,二叉树,排序主要运算1.插入2.删除3.元素的排名4.排名为k的元素5.元素x的前驱6.元素x的后继平衡二叉搜索树1.avl树2.treap树3.splay树4.红黑树5.替罪羊树C++中的红黑树1.set2.map
阅读全文
摘要:dfs序前置知识:线段树,树状数组,LCA,树的存储,树的基础问题类型1.点修改,子树查询2.子树修改,点查询3.子树修改,子树查询4.链修改,点查询5.点修改,链查询6.链修改,子树查询7.子树修改,链查询(1-3)易,(4-5)中,(6-7)难
阅读全文