摘要: 网络流之最大流 流函数三大性质: 1)容量限制:f(x,y) <= c(x,y) 2)斜对称:f(x,y)=-f(y,x) 3)流量守恒:x!=S,x!=T,Σf(u,x)=Σf(x,v) c(x,y)=0说明该条边不在图中,同时f(x,y)<=0 最大流 EK算法 O(ve^2) 10^3--10 阅读全文
posted @ 2022-02-26 23:38 fengzlj 阅读(29) 评论(0) 推荐(0)
摘要: 图论结论 1.任意一个有6个顶点的简单图或其补图一定包含一个三角形(Ramsey定理) 网络流之最大流 流函数三大性质: 1)容量限制:f(x,y) <= c(x,y) 2)斜对称:f(x,y)=-f(y,x) 3)流量守恒:x!=S,x!=T,Σf(u,x)=Σf(x,v) c(x,y)=0说明该 阅读全文
posted @ 2022-02-26 23:38 fengzlj 阅读(91) 评论(0) 推荐(0)
摘要: 无向图的联通分量 const int MAXN=1e4+100;vector<int> G[MAXN];bool vis[MAXN];void dfs(int u){ for(int i=0;i<G[u].size();++i){ if(!vis[G[u][i]]){ vis[G[u][i]]=1; 阅读全文
posted @ 2022-02-26 23:38 fengzlj 阅读(73) 评论(0) 推荐(0)
摘要: 二分图最大匹配 增广路的性质: 1).长度是奇数 2).路径上第1,3,5...,len条边是非匹配边,第2,4,6,...,len-1条边是匹配边。 二分图的一组匹配S是最大匹配,当且仅当图中不存在S的增广路 相关定理: 完备匹配:给定一张二分图,其左部、右部节点数相同,均为N个节点。如果该二 分 阅读全文
posted @ 2022-02-26 23:37 fengzlj 阅读(82) 评论(0) 推荐(0)
摘要: J Fraction Comparision 签到题 __int128 A Equivalent Prefixes 单调栈 B Integration 数学题,微积分 C Euclidean Distance 前缀和 F Random Point in Triangle概率+几何 A Equival 阅读全文
posted @ 2022-02-26 23:36 fengzlj 阅读(26) 评论(0) 推荐(0)
摘要: 数据结构和图论易错点 Edge &t=egde[i] 初始化是否完全 空间是否开够了 是否需要LL 阅读全文
posted @ 2022-02-26 23:36 fengzlj 阅读(34) 评论(0) 推荐(0)
摘要: 树的直径 1.树形DP求树的直径 void dp(int x){ v[x]=1; for(int i=head[x];~i;i=edge[i].next){ Edge e=edge[i]; if(v[e.to]) continue; dp(e.to); ans=max(ans,d[x]+d[e.to 阅读全文
posted @ 2022-02-26 23:35 fengzlj 阅读(73) 评论(0) 推荐(0)
摘要: 三种存图方式 1.邻接矩阵 2.邻接表 邻接表是一种对于每个顶点,用链表来存储以该点为起点的边的数据结构。 # include <bits/stdc++.h>using namespace std;​const int MAXN=250;struct Edge{ int to,w,next;}edg 阅读全文
posted @ 2022-02-26 23:35 fengzlj 阅读(261) 评论(0) 推荐(0)
摘要: 树上差分 # include <bits/stdc++.h>using namespace std;​const int MAXN=1e5+100;struct Edge{ int to,w,next;}edge[MAXN<<1];int head[MAXN];int tot=0;void add( 阅读全文
posted @ 2022-02-26 23:35 fengzlj 阅读(60) 评论(0) 推荐(0)
摘要: 二分图染色判断 判断图中不存在奇数环 O(n+m) //P1155# include <bits/stdc++.h>using namespace std;​const int MAXN=1e3+100;vector<int> G[MAXN];int color[MAXN];int bipart(i 阅读全文
posted @ 2022-02-26 23:34 fengzlj 阅读(179) 评论(0) 推荐(0)
摘要: 1004 Wave DP 1006 String 概率 1007 Traffic 逆向思维(出去不可以的,剩下的取最小) 1008 Rng 打表找规律 1009 Budget 四舍五入,字符串 1010 Worker LCM 1011 Class 签到,数的运算 1004 Wave 对于每一个新出现 阅读全文
posted @ 2022-02-26 23:33 fengzlj 阅读(51) 评论(0) 推荐(0)
摘要: LCA 1.向上标记 2.树上倍增 O((n+m)log n) # include <bits/stdc++.h>using namespace std;​const int MAXN=5e4+100;struct Edge{ int next,to,w;}edge[MAXN<<1];int tot 阅读全文
posted @ 2022-02-26 23:33 fengzlj 阅读(27) 评论(0) 推荐(0)
摘要: 树 树的DFS序 void dfs(int x){ a[++m]=x; //a数组存储DFS序 v[x]=1; //记录点x被访问过 for(int i=head[x];i;i=next[i]){ int y=ver[i]; if(v[y]) continue; dfs(y); } a[++m]=x 阅读全文
posted @ 2022-02-26 23:32 fengzlj 阅读(28) 评论(0) 推荐(0)
摘要: A* 定点第k短路 # include <bits/stdc++.h>using namespace std;​typedef long long LL;const int MAXN=1e3+100,MAXM=1e5+100;#define INF 123456789int n,m,s,t,k;st 阅读全文
posted @ 2022-02-26 23:32 fengzlj 阅读(62) 评论(0) 推荐(0)
摘要: 手动开栈 #pragma comment(linker, “/STACK:1024000000,1024000000”) 阅读全文
posted @ 2022-02-26 23:32 fengzlj 阅读(50) 评论(0) 推荐(0)
摘要: 分块 1.在线求区间众数问题 # include <bits/stdc++.h>using namespace std;​const int MAXN=4e4+100;int a[MAXN],pos[MAXN],val[MAXN],cnt[MAXN],mn[1000][1000];int t;map 阅读全文
posted @ 2022-02-26 23:31 fengzlj 阅读(19) 评论(0) 推荐(0)
摘要: 线段树 修改和查询时间复杂度都为 log n 区间加减 区间求和 区间最大最小 //注意会影响常数# include <bits/stdc++.h>using namespace std;​typedef long long LL;const int MAXN=1e6+7;const LL INF= 阅读全文
posted @ 2022-02-26 23:31 fengzlj 阅读(161) 评论(0) 推荐(0)
摘要: 树状数组 一、区间求和&&单点修改 树状数组是一个查询和修改复杂度都为log(n)的数据结构。主要用于数组的单点修改&&区间求和 C [ i ] = A [ i - 2^k + 1 ] + A [ i - 2^k + 2 ] + ...... A [ i ] ; (k为i的二进制中从最低位到高位连续 阅读全文
posted @ 2022-02-26 23:30 fengzlj 阅读(18) 评论(0) 推荐(0)
摘要: 对顶栈 【题意】模拟编辑器 算法进阶P50 【题解】对顶栈,(1)对于当前的sum求和的时候下标直接用当前前面的一个栈的size代替就可以;(2)还要注意字符的读入空格会有影响要加getchar;(3)还有stack.pop()之前要注意判断stack是不是空的。 # include <bits/s 阅读全文
posted @ 2022-02-26 23:30 fengzlj 阅读(555) 评论(0) 推荐(0)
摘要: 二分和三分 二分查找 二分的精度问题,一般用double解决,eps=1e-8,关于l,r的取值看那个区间有没有可能取到,然后-1或者+1,会不会使得值变化得特别大,如果会变化得特别大,那么就l,r都取mid O(log n) //查找一个数int b_Search(int x){ int l,r, 阅读全文
posted @ 2022-02-26 23:29 fengzlj 阅读(165) 评论(0) 推荐(0)