02 2021 档案
摘要:前言 链式前向星是很常用也很实用的数据结构,主要用来存储边的各种信息,它的空间复杂度比邻接矩阵好了太多太多,可以说是图论中最基础的东西了。 代码 inline void add(int x,int y,int z){ ver[++tot]=y,edge[tot]=z,nxt[tot]=head[x]
阅读全文
摘要:什么是LCA LCA(Least Common Ancestors),有一棵树,若结点z既是结点x的祖先也是结点y的祖先,且z的深度最大,那么称这个结点x是结点a,b的最近公共祖先。 倍增法是什么 其实求LCA,有一个极为朴素的方法,就是先比较两个结点的深度,然后dfs大的直到深度和小的一样,然后这
阅读全文
摘要:[noi2001]食物链 嗯哼,noi里的绿题... 首先,这道题要用并查集应该很容易看出来,因为有"x和y是同类","x吃y"这样的句子,我一开始想的方法是搞三个并查集(好家伙),后来经过尝试无果,因为出现了(xxx,xx,xxxx,yy,y,yyyy)这些我取的不太友好的名字,所以为了易读,就只
阅读全文
摘要:好耶,花了将近一上午,且在_的帮助在a了这道模板题 简要思路 这道模板题有两个区间操作 将某区间每一个数乘上 x 将某区间每一个数加上 x 有两种操作,那岂不是要两个? (⊙v⊙)嗯,是的 举个栗子: 假设我们维护一个量,它有两个标记和 因为线段
阅读全文
摘要:题目链接:LOJ 咕咕咕 #include <iostream> #include <cstdio> #include <cstring> #define ls p<<1 #define int long long #define rs p<<1|1 using namespace std; int
阅读全文
摘要:线段树的基本用途 查询某个区间 修改某个区间或点 是不是和树状数组很像? 注意 线段树的数组一定要开 建树代码 (sum) 通过二叉树的性质可知:对于一个父节点,它的左右两个儿子节点分别为i乘以2,i乘以2+1, 由此可以用数组模拟线段树: inline void build(int p,i
阅读全文
摘要:AC自动机,自动AC机? 代码 #include <iostream> #include <cstdio> #include <queue> #include <cstring> using namespace std; const int N=1e6+5; queue<int> q; char s
阅读全文