算法总结
文章平均质量分 56
SSL_LHNB
Violence Works Wonders
展开
-
【exgcd】不定方程整数通解
设{ax1+by1=gcd(a,b)bx2+(amodb)y2=gcd(b,amodb)gcd(a,b)=gcd(b,amodb)所以ax1+by1=bx2+(amodb)y2又因为amodb=a−(⌊ba⌋×b)所以有ax1。原创 2022-11-23 20:58:26 · 737 阅读 · 1 评论 -
差分约束算法总结
差分约束系统,是求解关于一组变量的特殊不等式组的方法。如果一个系统由n个变量和m个约束条件组成,其中每个约束条件形如xj-xi转载 2022-11-21 20:52:59 · 236 阅读 · 0 评论 -
网络流——最大流整理
通过从源点到汇点、在残余容量网络上进行的bfs来寻找增广路,引入反向边来保证之前的选择可以反悔,每条增广路增加的流量为路径上残余容量的最小值。直到无法找到增广路,此时流量为最大流。通过不断寻找增广路来尝试增加流量。.........原创 2022-08-07 21:49:24 · 150 阅读 · 0 评论 -
简述欧拉函数性质与应用
定义欧拉函数φ(n)φ(n)φ(n)(n为正整数),是指小于n的正整数中,与n互质的数的个数。(特别的,φ(1)=1φ(1)=1φ(1)=1)部分性质欧拉函数的通式:φ(n)=n∗∏(1−1pi)φ(n)= n*\prod{(1-\frac{1}{p_i})}φ(n)=n∗∏(1−pi1),其中p1,p2,...,pmp_1,p_2,...,p_mp1,p2,...,pm为n的所有质因子证明:对于质因子pip_ipi来说,由于倍数均匀分布,所以1~n中pip_ipi的倍数有n−p原创 2022-03-14 14:04:04 · 323 阅读 · 0 评论 -
数位dp简单总结
洛谷日报原文一些总结:数位dp的用法求出在给定区间[A,B]内,符合条件f(i)的数i的个数。条件f(i)一般与数的大小无关,而与数的组成有关。最高位标记limit的理解若当前位limit=1而且已经取到了能取到的最高位时,下一位limit=1;若当前位limit=1但是没有取到能取到的最高位时,下一位limit=0;若当前位limit=0时,下一位limit=0。当limit=0时,当前位可取0~9中的任一数字当limit=1时,当前位pos只可取能取到的最高位(即上界数字的pos位转载 2021-09-24 20:42:24 · 121 阅读 · 0 评论 -
Treap模板
#include<iostream>#include<cstdio>#include<cstdlib>using namespace std;const int N=1e6,inf=0x3f3f3f3f;struct node{ int r;//随机的优先级 int size,val,cnt;//val为节点的权值,cnt为相同权值节点合并后的个数 int ch[2];//ch[0]为左儿子,ch[1]为右儿子 }tree[N];int n,rt,t原创 2021-08-18 21:41:41 · 209 阅读 · 2 评论 -
splay模板
洛谷P3391文艺平衡树#include<iostream>#include<cstdio>#include<cstdlib>using namespace std;const int N=1e6,inf=0x3f3f3f3f;struct node{ bool rev;//rev记录该节点的子树是否需要反转 //val既为节点权值,也为初始时节点在区间中的下标 //(但因为之后会交换左右子树,所以val的大小不一定满足BST性质,因此只有建树时才有原创 2021-08-21 11:19:36 · 72 阅读 · 0 评论 -
主席树总结
主席树的全称是可持久化权值线段树,即主席树 ⫋ 可持久化线段树。——某大佬博客如是云原创 2021-08-15 20:52:52 · 78 阅读 · 0 评论 -
简介Tarjan算法——有向图缩点
#include<iostream>#include<cstdio>#include<vector>#include<queue>using namespace std;const int N=5*1e5;int n,m,tot,ti,top,len,ans;int a[N],dfn[N],low[N],st[N],col[N],deg[N],f[N],sum[N];int cnt,he[N],ne[N],to[N];vector <i原创 2021-07-07 21:31:37 · 189 阅读 · 0 评论 -
哈夫曼树模板
#include<iostream>#include<cstdio>#include<algorithm>using namespace std;typedef long long ll;const int N=100;int n,sum;string ans[N];struct tree{ char c; int data,lch,rch;}f[N];struct node{ char c; int data,num;}a[N];bo原创 2021-03-26 21:51:41 · 150 阅读 · 0 评论 -
KMP算法总结
大佬的详细解析*自己的总结 定义,模式串为s,匹配串为t,s的指针为i,t的指针为j。 KMP本质上就是利用next数组中预处理出来的信息(即最长相等前后缀,next[j]表示t1~tj-1的最长相等前后缀长度,同时是如果在tj处匹配失败后子串的指针j应该指向的位置),来加快字符串的匹配。 例如,next[j]=3时,若当前t的第j位与s的第i位匹配失败,那么根据next数组的定义,t0、t1、t2等于tj-3、tj-2、tj-1,而tj-3、tj-2、tj-1又是等于si-3、si-2、si-1转载 2021-04-17 16:59:33 · 140 阅读 · 0 评论 -
Ybtoj 强连通分量.D 恒星的亮度(差分约束系统简单总结)
差分约束系统利用最短路径算法结束后图中任意一条边u->v,都满足dis[v]<=dis[u]+w(u,v)的性质,将一个所有不等式的形式均为Xi<=Xj+k的不等式组,转化成一个有向图,其中,每一条不等式转化为一条由j指向i、边权为k的有向边。从而求解在一个变量的值确定的情况下,其他变量的最大值。(如果是求解最小值,就是用最长路径算法,将一个所有不等式的形式均为Xi>=Xj+k的不等式组变成有向图。其余的性质可见下题代码注释,下题就是利用最长路径算法求最小值)恒星的亮度大佬原创 2021-07-08 10:58:46 · 106 阅读 · 0 评论 -
AC自动机总结
本篇适合看完大佬博客有一定基础,但又问题重重的童鞋进来。以下分享的都是我自己对AC自动机的感悟,不喜勿喷,就当是给我自己看的。算法基本思路:Trie树上做KMP定义若根节点到x节点这条字符串,为根节点到i节点这条字符串中最长的后缀,则fail[i]=x。根节点到当前节点i表示的字符串记为s1,根节点到fail[i]节点表示的字符串记为s2。实现插入准备匹配的串就是普通trie树的插入,没有任何变化。void insert(){ int len=s.size(),k=0; fo原创 2021-07-05 16:07:52 · 96 阅读 · 0 评论