03 2023 档案
摘要:前言 如果论学习过程中什么是最重要的,那就是坚持自己的学习计划;如果论学习过程中什么是比坚持更重要的,那就是制定自己的学习计划。 譬如我们在做题时,难免出现做完就忘,做题没有动力的时候,这时候博客就起到了它神奇的作用——记录每天得一点一滴,使学习有了“饱腹感”。所以写博客是必不可少的,但是它远没有想
阅读全文
摘要: 最小点覆盖(每条边至少选一个点)=最大匹配 最大独立集(每条边最多选一个点)=总点数-最小点覆盖 一般匈牙利只用建单向边就行了(从左到右),而从右到左用的是 数组。 $\color{purple}\text{P4304
阅读全文
摘要:拓扑排序 一种基于 图的 遍历图的算法,喜欢结合优先队列,反向建图进行考察。 tarjan强连通 补充 stack<int>q; void tarjan(int pos){ dfn[pos]=low[pos]=++cnt;//路径序号和所能到达的最小序号 bk[pos]=1
阅读全文
摘要:## ST表 ```cpp #include using namespace std; const int N=1e6+110; int st[N][21],m,n,k[N]; int read(){ int x=0,f=1;char c=getchar(); while(c>'9' || c='0
阅读全文
摘要:链接1 链接2 链接3 二分图 把一个无向图的点分为两个集合 图中的每条边的两个端点分别属于两个集合 所以,二分图中没有奇数个数点的环 判定 用染色法dfs或bfs 从一个未染色的点出发 枚举它的边 如果他的下一个点颜色与他相同 则该图不是二分图 如果下一个点为未染色 则搜索它 二分图的匹配 选定二
阅读全文
摘要:1.CRT中国剩余定理 2.拓展欧几里德 int exgcd(int a,int b,int &x,int &y){ if(b==0){x=1;y=0;return a;} int d=exgcd(b,a%b,y,x);//d是最大公约数 y-=a/b*x;return d; } 对于$ax+by=
阅读全文
摘要:链接1 链接2 链接3--超全 最大流的增广路算法(最大流) FF 采用深搜 不停地寻找增广路 每找到一条 就把它减去min 把它的反向边加min 给下次搜索一个反悔的机会 #include<bits/stdc++.h> #define ll long long using namespace st
阅读全文
摘要:莫队 #include<bits/stdc++.h> using namespace std; const int N=50010,M=200100,K=1e6+2022; int read(){ int x=0,f=1;char c=getchar(); while(c>'9' || c<'0')
阅读全文
摘要:笛卡尔树 #include<bits/stdc++.h> using namespace std; const int N=1e7+10; int read(){ int x=0,f=1;char c=getchar(); while(c>'9' || c<'0'){if(c=='-')f=-1;c
阅读全文
摘要:int128 高精度本质上是字符串实现的,所以把 放这了。 #include <bits/stdc++.h> using namespace std; typedef unsigned __int128 LLL; LLL read() { LLL x = 0, f = 1; char
阅读全文
摘要:# Treap 通过维护堆的性质,使平衡树平衡,操作是旋转。 ```cpp #include using namespace std; const int N=1e5+2022,inf=0x3f3f3f3f; int read(){ int x=0,f=1;char c=getchar(); whi
阅读全文
摘要:扫描线 #include<bits/stdc++.h> #define int long long using namespace std; const int N=4e5+10; int read(){ int x=0,f=1;char c=getchar(); while(c>'9' || c<
阅读全文
摘要:vector VECTOR set https://blog.csdn.net/qq_56067257/article/details/123252972 insert(key_value); 将key_value插入到set中 ,返回值是pair<set<int>::iterator,bool>,
阅读全文