摘要:
#笛卡尔树 前置知识:单调栈 基础知识 这里做点总结 笛卡尔树有两条性质 二叉搜索树 小根堆 定理:编号权值互不相同的笛卡尔树构造是唯一的 二叉搜索树满足 左儿子权值小于父节点,右儿子权值大于父节点 小根堆满足权值小于左右节点 (两个权值不能混为一谈) 因为笛卡尔树结点是由二元组(x,y)组成 x为 阅读全文
摘要:
最短Hamilton路径 关键理解 我们令f[i][j]表示i二进制数中1表示走过的点组成的二进制数,以十进制表示,现在在第j个点的最小值 举例 \(3_{10}=(11)_2,表示经过0和1这两个点,f[3][0]则表示经过0,1两个 点,处于第0个点的最小值,其他同理\) 这个理解了,状压就不是 阅读全文
摘要:
##FHQ 平衡树 这次以文艺平衡树为例讲解FHQ 平衡树维护区间信息 ###前言 没有PHQ基础的先看这个 平衡树(一) 区间操作 反转区间 假设反转区间[l,r] 拆分成三段x[1,l-1],y[l,r],z[r+1,n],然后操作中间区间y后合并 对区间用懒标记即可,懒标记标记左右儿子是否反转 阅读全文
摘要:
#FHQ 平衡树 fhq 平衡树由范浩强巨佬发明,基于treap,实现无旋保持平衡 treap=tree+heap(中文翻译:树堆 其同时满足BST性质和堆性质 BST简单来说,就是一颗二叉树,根节点的左儿子节点所有值<根节点<根节点的右儿子的所有值 堆的性质,即为二叉树中,父节点的值大于等于(或小 阅读全文
摘要:
素数 素数:一个整数大于1除了1和它自己,没有其他约数即为素数 数学语言:\(\forall n \in Z^+ 且 n>=2 同时只存在1|n,n|n\) 与之相反,合数的定义即为除了1和它自己还有约数 小知识:素数只有2和素奇数 素数筛法 穷举法 及枚举\((1,n)\)的所有数,如果某个数能整 阅读全文
摘要:
##数组去重 从后往前扫一遍数组,找到未被标记的数,存下来,标记;已经被标记的就不用存下来 code #include<iostream> #include<cstring> using namespace std; int n; const int maxn=55; bool book[maxn* 阅读全文
摘要:
##题目传送门 题意:有一种操作可使$2×2$的矩阵中任意三个数进行~操作(0变1,1变0) 易得,操作如果对同一数进行了偶数次,数不变,奇数次变 再加上有操作次数限制,$3nm$次操作 那么把每个数,都操作三次,其他数都操作两次,即可使矩阵任一一数0变为1,1变为0 举个例子 蓝色绿色紫色覆盖的格 阅读全文
摘要:
###目录 最大公约数 最小公倍数 扩展欧几里得算法 求解线性同余方程 前置知识整除及同余 ##最大公约数GCD 最大公约数 意思为,两个及更多整数的最大的共同约数 (我们称$GCD(x,y)$为$x,y$的最大公约数) 当$GCD(x,y)==1$时我们称$(x,y)$互质 ###辗转相除法 辗转 阅读全文
摘要:
#题目传送门 虽然题很简单,也有其他做法 但这里介绍一种灵活运用二进制的做法 举例就懂了 \((6)_{10}*(9)_{10}=(110)_2*(9)_{10}=(2^2+2^1)_{10} *(9)_10=9*2^2+9*2\) 然后用类似于快速幂的做法边%边+即可 #include<iostr 阅读全文
摘要:
#增减序列 最终的目的是让整个序列相等 操作只有一种使$[l,r]\(区间全都\)+1$ 既然整个序列相等,那么整个序列的差分序列应为0 操作的话就可以转化为$a[l]+=1,a[r+1]-=1$ 求的是最少操作次数 通过原数列,我们先求一个原始的差分序列,然后每次操作使,正数-1,负数+1,这样就 阅读全文