————算法模板————
云淡风轻<<
这个作者很懒,什么都没留下…
展开
-
网络流小结
最大流算法模板 最小费用最大流模板 最大费用最大流解法: 1.把所有费用变成相反数跑一遍最小费用最大流,输出答案的相反数。 2.初始化spfa时dis数组全从INF改为-INF,松弛的条件从 dis[i]>dis[j]+cost[i,j]改为dis[i]<dis[j]+cost[i,j] 最小割: (1)最小割定义: 假设在原图中,删掉某些边,能够使得从s出发到不了t,则这些边的集...原创 2019-11-22 15:22:04 · 86 阅读 · 0 评论 -
网络流最大流 ek算法模板和dinic模板
ek+邻接矩阵 #include<stdio.h> #include<string.h> #include<algorithm> #include<iostream> #include<queue> using namespace std; const int maxn=205; int v[maxn][maxn]; int pre[ma...原创 2019-11-19 21:23:45 · 126 阅读 · 0 评论 -
费用流模板 ek+spfa和 dinic+spfa
ek+spfa #include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #include<queue> #include<string> #define ll long long using namespace std; const i...原创 2019-11-16 15:57:08 · 208 阅读 · 0 评论 -
快速幂取模和快速积取模模板
快速幂取模 long long ksm(long long a,long long b,long long mod) { long long ans=1; while (b) { if (b&1) ans=(ans*a)%mod; a=(a*a)%mod; b>>=1; } return (ans)%m...原创 2019-11-11 11:34:41 · 185 阅读 · 1 评论 -
表达式求值模板
保留两位小数 // AC(动态规划) #include<stdio.h> #include<string.h> int len; int fst[1005]; char str[1005]; double Jud(int begin, int end); /*计算并返回表达式在区间[begin end]中的值*/ int main() { int T, i; ...原创 2019-10-25 17:15:04 · 160 阅读 · 0 评论 -
KMP总结
自己的模板 判断模式串在总串的哪个位置开始出现 #include <iostream> #include<algorithm> #include<string.h> #include<stdio.h> using namespace std; int ne[10005]; int s[1000005],p[10005]; int m,n; void ...原创 2019-10-25 16:07:36 · 102 阅读 · 0 评论 -
逆元
概念:对于两个数a,p,如果存在gcd(a,p)=1,则一定存在另一个数x,使得 ax ≡ 1(mod p),并称此时的x为a关于1模p的乘法逆元,如果化成式子来说的话就是 ax = p*k+1,存在x和k使式子存在 求逆元的方法: 1.扩展欧几里得 LL exgcd(LL a,LL b,LL &x,LL &y)//扩展欧几里得算法 { if(b==0) { ...转载 2019-10-25 16:06:23 · 92 阅读 · 0 评论 -
中国剩余定理模板
对于x≡ v (mod s) (s0,s2,…sn-1)两两互质 对于n组v和s,求出较小的 满足式子的x的值 #include <iostream> #include<stdio.h> using namespace std; const int MAXN = 100; int n, v[MAXN], s[MAXN]; //必要的时候用long long int e...原创 2019-10-25 15:49:49 · 95 阅读 · 0 评论 -
博弈论算法
巴什博弈: 两个顶尖聪明的人在玩游戏,有一堆nn个石子,每次每个人能取[1,m][1,m]个石子,不能拿的人输,请问先手与后手谁必败? 结论: 通过上面的分析可以得出结论:当nn能整除m+1m+1时先手必败,否则先手必胜。 尼姆博弈(Nim): 两个顶尖聪明的人在玩游戏,有nn堆石子,第ii堆有aiai个,每人每次能从一堆石子中取任意多个石子但不能不取,不能拿的人输,请问先手与后手谁必胜? 结论:...原创 2019-10-23 19:06:29 · 265 阅读 · 0 评论 -
<bitsit>算法
< bitset >头文件 bitset是用来存放bit位元素的,由于每个元素(0或1)只占1bit位,因而可以节约空间(相比于8bit位的bool型变量)。在c++ stl中,提供了操作位的容器,使用前包含< bitset >头文件即可。 相关操作 创建bitset对象 如bitset<100> b,它能容纳100位比特位,每位上的初始值为0 注意:bitse...原创 2019-10-23 18:52:08 · 253 阅读 · 0 评论 -
扩展欧几里得算法
说明了对任何整数a、b和它们的最大公约数d ax + by = m 有整数解时当且仅当m是d的倍数。 特别来说,方程 ax+by=1 有整数解当且仅当整数a和b互素。 int exgcd(int a, int b, int &x, int &y) { if(b == 0) {//推理1,终止条件 x = 1; y = 0; ...原创 2019-10-22 20:19:48 · 68 阅读 · 0 评论