数据结构
kkk033
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LCA 学习笔记
据我所知,实现LCA有三种方法:基于二分搜索、基于RMQ、树链剖分基于二分搜索其实就是对父子节点做一个2^k表,也就是倍增的思想,但是这个二分搜索的搜索方式有点与众不同int lca(int u,int v){ if(depth[u]>depth[v]) swap(u,v); for(int k=0;k<max_log_v;k++) { if((depth[v]-depth[u])>>k&1) {原创 2021-04-10 15:28:05 · 253 阅读 · 0 评论 -
回滚莫队||不删除莫队
回滚莫队也叫做不删除莫队,对于某些在莫队中的操作,不好统计删除操作是就可以回滚。回滚的意思就是,先撤销对某个点的操作然后再增加回来(所以同理有不增加莫队)如果块中的两点在同一个块上,那么暴力即可。这样每次操作的复杂度为根号n如果不在同一个块中,那么需要将左端点置与块中的末端,右端点置于下一块的首端,可以知道对于同一个块中的右端点总是递增的所以统计一个块右端点的复杂度为n,有根号n个块,那么总复杂度为n根号n所以总体复杂度还是n根号n级别的。...原创 2021-04-17 11:09:47 · 614 阅读 · 0 评论 -
二分图匹配 一般图匹配 带花树
一些常用概念和定理:Hall定理: 二部图G中的两部分顶点组成的集合分别为X, Y; X={X1, X2, X3,X4, .........,Xm}, Y={y1, y2, y3, y4 , .........,yn}, G中有一组无公共点的边,一端恰好为组成X的点的充分必要条件是:X中的任意k个点至少与Y中的k个点相邻。(1≤k≤m)匹配: 给定一个二分图G,在G的一个子图M中,M的边集中的任意两条边都不依附于同一个顶点,则称M是一个匹配。图一中红线为就是一组匹配。未盖点:原创 2021-03-14 17:48:52 · 297 阅读 · 0 评论 -
平衡树学习
#include<bits/stdc++.h>using namespace std;const int maxn=2e6;int n;struct node{ int num,num1,val,ch[3],key;}shu[maxn];int ans=0;void up(int k){ shu[k].num=shu[shu[k].ch[0]].num+shu[shu[k].ch[1]].num+shu[k].num1;}void romate(int &k,.原创 2021-11-02 17:26:11 · 186 阅读 · 0 评论 -
2021-ICPC昆明站M-Stone Games(思维+主席树)
题目链接:M-Stone Games_第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(昆明)(重现赛) (nowcoder.com)对于【L,R】区间所能表示的【1,x】,其中x即是所能表示的连续的最大值,也就是表示不了x+1了,记不能表示的最小值为mex如何扩展?对于a[r+1]来说:如果a[r+1]>x+1,那么肯定表示不了x+1,有效值域还是原来的【1,x】如果a[r+1]<=x+1,那么有效值域就能扩展到【1,x+a[r+1]】因此如果我们让这段区间原创 2021-04-27 17:30:32 · 536 阅读 · 0 评论 -
different intergers
题意:给出n个整数的序列a(1≤ai≤n)和q个询问(1≤n,q≤1e5),每个询问包含两个整数L和R(1≤L,R≤n)。对于每个询问,输出a[1...L]和a[R...n]的不同数字的个数。原创 2021-01-25 09:55:54 · 253 阅读 · 0 评论 -
线段树套线段树 二维线段树
二维线段树的维护用于pushdown操作不能实现(你会发现不断递归才能找到正确答案)而对于pushup操作,似乎也不方便(待会可以试试)这时引入一个标记永久化的概念,我们在维护线段树时会使用一个max数组维护数量关系而对于永久化而言,所有子区间同样适用,这样需要另开一个数组tag维护永久化的内容刚开始用于tag数组只会更新内层出现错误,后来想想,标记永久化同样需要max子数组,因为同一块永久化内容里面也可能会出现分歧,我们需要更新塔,避免出现错误但是这样的更新对于tag内容是一种原创 2021-01-11 17:10:44 · 281 阅读 · 1 评论 -
线段树及树状数组 学习笔记 持续学习更新中
这个星期重温了下原本就“脆弱”的线段树(好吧是我太菜了)才。。。。发现。。。原来线段树里面还有懒惰标记这玩意儿。。。看起来挺复杂的。。。的确刚开始看时懵逼了好一阵子主要是因为,某些博客上贴的代码实在有点这样那样的问题,建议找板子的要找靠谱的,看代码的主要看个大概就行验证一下思路,因为你会发现,有些代码经不起抠好吧正式进入正文哈哈哈哈哈哈先来简单回顾一下线段树基础:线段树以二进制为载体(我个人觉得这算是位运算衍生出来的一种数据结构),主要思想还是二分(仔细想想到底是不是),..原创 2020-11-03 23:34:00 · 286 阅读 · 0 评论
分享