09 2023 档案
摘要:李超线段树 实现起来其实不算复杂 首先认识到我们插入的线段并不好来合并 那么我们选择不合并。 插入的操作是这样的: 首先对于新线段\(id\)如果中点值比原来的最优解大,我们\(swap\)一下 然后开始比较两边端点值: 如果左边\(id\)的值更大,说明左边还能继续更新。 右边同理 对着图片就能知
阅读全文
摘要:其实这个模板题高于板子 其实就是对应点相加 主要是理解每种颜色一颗节点的思想 线段树合并 线段树合并往往是为了更好的统计答案,思路是从下往上的. #include<bits/stdc++.h> #define int long long #define F(i,i0,n) for(int i=i0;
阅读全文
摘要:虽然说原理不是贪心,但是实现起来很贪心? 一个线性基满足,对于它所表示的所有数的集合S, S中任意多个数异或所得的结果均能表示为线性基中的元素互相异或的结果,即意,线性基能使用异或运算来表示原数集使用异或运算能表示的所有数。运用这个性质,我们可以极大地缩小异或操作所需的查询次数。 线性基合并也很简单
阅读全文
摘要:更推荐启发式合并,好写多了 主要是这个可以持久化 #include<bits/stdc++.h> #define F(i0,i1,i2) for(int i0=(i1);i0<=(i2);++i0) #define fr first #define sc second #define int lon
阅读全文
摘要:代码来源是狼抓兔子 先跑出分层图然后流 有当前弧优化(这个和欧拉回路的操作很像?) #include<bits/stdc++.h> #define F(i,i0,n) for(int i=i0;i<=n;i++) #define Ln inline #define ll long long usin
阅读全文
摘要:fhq 平衡树 这里的支持的是 \(ins,del,pre,nxt,kth,rank\) #include <bits/stdc++.h> #define F(i,i0,n) for(int i=i0;i<=n;i++) #define mod 23333 #define ll long long
阅读全文
摘要:支持了pd和区间翻转 以及这里写的是按照子树大小分裂,是为了方便和序列对应上 顺便还有中序打印 #include <bits/stdc++.h> #define F(i,i0,n) for(int i=i0;i<=n;i++) #define mod 23333 #define ll long lo
阅读全文
摘要:其实一直都不是很会splay #include<bits/stdc++.h> #define F(i0,i1,i2) for(int i0=i1;i0<=i2;++i0) #define N 100005 using namespace std; inline int rd(){ int x=0,f
阅读全文
摘要:重点在于 \(low[v]>dfn[u]\) 为什么呢? 因为回不去了,所以说是割边 画图理解一下就好了 割边把图分割为各个边双联通的子图,直接\(dfs\)出结果. #include <bits/stdc++.h> #define mod 23333 #define ll long long #d
阅读全文
摘要:重工业 当答案与树的形态无关,只与子树信息有关时 然后你又要来点修改. 可用点分树 所以说你要来两斤数据结构维护 #include<bits/stdc++.h> #define int long long #define F(i,i0,n) for(int i=(i0);i<=(n);i++) #d
阅读全文
摘要:主要就是 $ dfn[u]<=low[v]$ #include <bits/stdc++.h> #define mod 23333 #define ll long long #define F(i,i0,n) for(int i=i0;i<=n;i++) const int N = 5e5 + 10
阅读全文
摘要:中工业 #include<bits/stdc++.h> #define F(i0,i1,i2) for(int i0=(i1);i0<=(i2);++i0) #define int long long #define pii pair<int,int> #define fr first #defin
阅读全文
摘要:就是网络流里面的搜索变成了最短路 你跑的是\(SPFA\),所以你不能当前弧 #include<bits/stdc++.h> #define int long long #define F(i,i0,n) for(int i=i0;i<=n;i++) #define Ln inline using
阅读全文
摘要:暴力美 忘了就看 #include<bits/stdc++.h> #define int long long #define F(i,i0,n) for(int i=i0;i<=n;i++) using namespace std; inline int rd(){ int f=0,x=0;char
阅读全文
摘要:挺可持久化的实现过程 #include<bits/stdc++.h> #define int long long #define F(i,i0,n) for(int i=i0;i<=n;i++) using namespace std; inline int rd(){ int f=0,x=0;ch
阅读全文
摘要:这个就是最基本的了. 主要是用来造出DAG然后跑个topo之类的DP #include <bits/stdc++.h> #define mod 23333 #define ll long long #define F(i,i0,n) for(int i=i0;i<=n;i++) #define N
阅读全文
摘要:可重集 ( ex权值线段树是吧 ) 题目描述 给出一个可重集 \(a\)(编号为 \(1\)),它支持以下操作: 0 p x y:将可重集 \(p\) 中大于等于 \(x\) 且小于等于 \(y\) 的值移动到一个新的可重集中(新可重集编号为从 \(2\) 开始的正整数,是上一次产生的新可重集的编号
阅读全文

浙公网安备 33010602011771号