算法
文章平均质量分 74
DarksideCoder
隔岸观花
展开
-
NTT多项式板子
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int input=1000000;char InPut[1000005];inline char GetChar(){ if(input>=1000000)fread(InPut,1,1000000,stdin),input=0; return InPut[input++];}#defin原创 2021-10-24 09:21:46 · 188 阅读 · 0 评论 -
SizeBalancedTrees
前言BST一直都是卡常的领域,为了不被卡常,我们需要一个更平衡的BST,SizeBalanceTree就是不错的选择。旋转众所周知,平衡树分为两类,非旋平衡树和旋转平衡树,SizeBalanceTree是依靠旋转来保持平衡的。左旋左旋的意思就是把当前节点移到左边去,同时保持树的中序遍历不变,右旋也是同理(代码与左旋对称),注意保持树的中序遍历不变是非常重要的,它决定了树的搜索性质是否变化;右旋代码inline void Rotate(int &now,bool flag){原创 2021-10-14 19:45:46 · 207 阅读 · 0 评论 -
FastIO
const int MaxS=2100;int limit,pos;char St[MaxS];inline int GetLine(){ pos=0;limit=0;char ch=getchar(); while(ch!='\n'&&ch!='\r'){ St[limit++]=ch; ch=getchar(); } St[limit]='\n'; return limit;}template<typename inttype>inline in原创 2021-10-07 09:21:26 · 95 阅读 · 0 评论 -
动态规划的优化
动态规划的优化1.01.01.0 单调队列\单调栈优化1.0.01.0.01.0.0 例题引入1.0.11.0.11.0.1 分析1.01.01.0 单调队列\单调栈优化1.0.01.0.01.0.0 例题引入有 NNN 块木板从左到右排成一行 ,,, 有 MMM 个工匠对这些木板进行粉刷 ,,, 每块木板至多被粉刷一次 ...第 iii 个木匠要么不粉刷 ,,, 要么粉刷包含木板 SiS_iSi 的 ,,, 长度不超过 LiL_iLi 的连续的一段木板 ,,, 每粉刷一块可以得到 PiP_原创 2021-10-06 09:36:00 · 111 阅读 · 0 评论 -
背包模型
背包模型1.01.01.0 010101背包问题2.02.02.0 完全背包问题3.03.03.0 多重背包问题3.0.13.0.13.0.1 直接拆分法3.0.23.0.23.0.2 二进制拆分法3.0.33.0.33.0.3 单调队列优化3.0.43.0.43.0.4 Acwing2814.04.04.0 分组背包问题1.01.01.0 010101背包问题每一个物品只能取 111 次 ,C++,C++,C++ 模板 :::#include<cstdio>#include<cs原创 2021-09-30 14:51:13 · 82 阅读 · 0 评论 -
二分图匹配的可行边和必须边
定义给定一张二分图 ,,, 其最大匹配方案不一定是唯一的 ... 若任何一个最大匹配方案的匹配边都包括 (x,y),(x,y),(x,y), 则称 (x,y)(x,y)(x,y) 为二分图匹配的必须边 ... 若 (x,y)(x,y)(x,y) 至少属于一个最大匹配的方案 ,,, 则称 (x,y)(x,y)(x,y) 为二分图匹配的可行边 ...解法保证完备匹配时我们先求出任意一组完备匹配的方案 ,,, 此时所有节点都是匹配点 ...根据定义 ,,, (x,y)(x,y)(x,y) 是必须边原创 2021-09-29 20:18:31 · 497 阅读 · 0 评论 -
欧拉路和哈密顿路
欧拉路欧拉路是指 ::: 存在这样一种图 ,,, 可以从其中一点出发 ,,, 不重复地走完其所有的边 ... 如果欧拉路的起点与终点相同 ,,, 则称之为欧拉回路 ...欧拉路存在的充要条件如下 :::图是连通的 ,,, 若不连通不可能一次性遍历所有边。对于无向图 :::有且仅有两个点 ,,, 与其相连的边数为奇数 ,,, 其他点相连边数皆为偶数 ;;;对于两个奇数点 ,,, 一个为起点 ,,, 一个为终点 ... 起点需要出去 ,,, 终点需要进入 ,,, 故其必然与奇数个边原创 2021-09-28 20:45:17 · 650 阅读 · 0 评论 -
有向无环图的最小路径点覆盖
有向无环图的最小路径点覆盖问题解法1.1.1. 拆点二分图定义2.2.2. 定理1113.3.3. 拓展问题问题给定一张有向无环图 ,,, 要求用尽量少的不相交的简单路径((( 不是有向边 ))) ,,, 覆盖有向无环图的所有顶点 ((( 也就是每个顶点恰好被覆盖一次 ).).). 这个问题被称为有向无环图的最小路径点覆盖...解法1.1.1. 拆点二分图定义设原来的有向无环图为 G=(V,E),n=∣V∣.G=(V,E),n=|V|.G=(V,E),n=∣V∣. 把 GGG 中的每一个 xx原创 2021-09-28 19:03:54 · 303 阅读 · 0 评论 -
2-Satisfiability专题
2-Satisfiability专题模型判定构图方法模型有 NNN 个变量 ,,, 每个变量只有两种可能的取值 ... 在给定 MMM 个条件 ,,, 每个条件都是对两个变量的取值限制 ... 求解 ::: 是否存在对 NNN 个变量的合法赋值 ,,, 使 MMM 个条件均得到满足 ...设一个变量 Ai(1≤i≤N)A_i(1\le i\le N)Ai(1≤i≤N) 的两种取值分别是 Ai,0A_{i,0}Ai,0 和 Ai,1.A_{i,1}.Ai,1. 在 2−Sat2-Sat2−Sat原创 2021-09-27 22:08:54 · 105 阅读 · 0 评论 -
欧拉简单多面体定理
转载于 ::: 这里简单多面体欧拉定理 ::: 对于简单多面体 ,,, 其各维对象数总满足一定的数学关系 ,,, 在三维空间中设其顶点 ,,, 边和面的数量分别为 V,E,FV,E,FV,E,F 则欧拉定理可表示为 :::V−E+F=2V - E + F = 2V−E+F=2对多面体的顶点数n进行数学归纳 :::顶点最少的多面体为四面体 ,,, n = 4 ((( 三棱锥 ),),), 验证得 V−E+F=4−6+4=2,V-E+F=4-6+4=2,V−E+F=4−6+4=2, 命题成立 .转载 2021-09-27 15:49:58 · 562 阅读 · 0 评论 -
差分约束问题
差分约束问题模型构图方法模型差分约束系统是一种特殊的 NNN 元一次不等式组 ... 包含 NNN 个变量 x1∼xnx_1\sim x_nx1∼xn 以及 MMM 个约束条件 ,,, 每个约束条件都是由两个变量作差构成的 ,,, 形如 xi−xj≤cxx_i-x_j\le c_xxi−xj≤cx ,,, 其中 cxc_xcx 是一个常数 ,,, 1≤i,j≤N,1≤k≤M.1\le i,j\le N,1\le k\le M.1≤i,j≤N,1≤k≤M. 求一组解 xi=ai,x_i=a_i原创 2021-09-24 22:18:26 · 103 阅读 · 0 评论 -
01分数规划专题
01分数规划专题问题问题给定整数 a1,a2,⋯ ,ana_1,a_2,\cdots,a_na1,a2,⋯,an 以及 b1,b2,⋯ ,bnb_1,b_2,\cdots,b_nb1,b2,⋯,bn ,,, 求一组解 xi,(1≤i≤n,xi∈{0,1}),x_i,(1\le i\le n,x_i\in \{0,1\}),xi,(1≤i≤n,xi∈{0,1}), 使下式最大化 :::Σi=1nai∗xiΣi=1nbi∗xi\frac{\Sigma^n_{i=1}a_i*x_i}{\原创 2021-09-24 11:41:25 · 59 阅读 · 0 评论 -
基环树专题
基环树专题最近公共祖先直径最近公共祖先Acwing 392Acwing~392Acwing 392const int MaxN=5e5+1e4;int Head[MaxN],Dp[MaxN][21],Belong[MaxN],Dad[MaxN];inline int GetDad(int x){ return x==Dad[x]?x:Dad[x]=GetDad(Dad[x]);}inline void Union(int x,int y){ x=GetDad(x);y原创 2021-09-24 08:07:04 · 64 阅读 · 0 评论 -
最短路专题
最短路专题最短路FloydFloydFloyd 算法BellmanFordBellmanFordBellmanFord 算法判负环BellmanFordBfsBellmanFordBfsBellmanFordBfs 算法判负环DijkstraDijkstraDijkstra 算法正权最短路原始对偶算法KthPathKthPathKthPath 问题最短路FloydFloydFloyd 算法BellmanFordBellmanFordBellmanFord 算法判负环BellmanFordBfsBe原创 2021-09-22 20:56:53 · 147 阅读 · 1 评论 -
网络流专题
最小费用流capacity−scalingcapacity-scalingcapacity−scaling 算法FromFromFrom OuuanOuuanOuuan#include<cstdio>#include<cstring>#include<algorithm>using namespace std;template<typename Typename>inline Typename Max(const Typename&x原创 2021-09-16 20:31:17 · 107 阅读 · 0 评论 -
字符串专题
字符串专题KmpKmpKmp 算法ManacherManacherManacher 算法KmpKmpKmp 算法#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int Maxn=1e6+2e2;//Kmp[i] is mean the longest same preifx and suffix's len.int Kmp[Maxn],lena,le原创 2021-09-14 20:57:06 · 52 阅读 · 0 评论 -
数学专题
数学专题判断质数1.0 O(n)O(\sqrt n)O(n)做法2.0 MillerRabinMillerRabinMillerRabin和PollardRhoPollardRhoPollardRho算法3.0 线性筛素数欧拉函数欧拉定理及其推论拓展欧几里德矩阵乘法高斯消元莫比乌斯函数判断质数1.0 O(n)O(\sqrt n)O(n)做法inline bool Check(const int&num){ for(register int i=2;i*i<=num;++i)//n原创 2021-09-14 20:43:38 · 114 阅读 · 0 评论 -
Unstandard Template Library
Unstandard Template Library排序归并排序基数排序排序归并排序template<typename Typename>inline void MergeSort(Typename *Arr,int left,int right){ Typename *Tmp=new Typename[right-left+1]; register int tmp=0,ls,lk,rs,rk; for(register int k=1;k<=right原创 2021-08-31 12:58:48 · 413 阅读 · 0 评论 -
连通性专题
强连通专题原创 2021-09-09 19:58:18 · 196 阅读 · 0 评论 -
线段树专题
线段树专题线段树合并线段树合并原创 2021-09-08 10:06:02 · 114 阅读 · 0 评论 -
匹配专题
匹配专题二分图的匹配最大匹配二分图的匹配最大匹配Graphs<MaxN,MaxM>G;Queue<int,MaxN>Q;int ans;int Pre[MaxN],Match[MaxN],Mark[MaxN];//Mark 为时间戳 每一个左部点的匹配 右部点只会参加一次 int n,m;inline void Bfs(){ memset(Match,-1,sizeof(Match)); memset(Mark,-1,sizeof(Mark)); for(re原创 2021-09-14 09:27:39 · 118 阅读 · 0 评论 -
图论专题
图论专题数据结构邻接矩阵邻接表数据结构邻接矩阵定义矩阵 Arrx,yArr_{x,y}Arrx,y 表示节点 xxx ,,, yyy 之间的信息 ...int Cost[MaxN][MaxN];inline void Work(){ int from; for(register int to=1;to<=n;to++) if(Cost[from][to]!=-1)Cost[from][to];}inline void Init(){ memset(Cost,-1,size原创 2021-09-13 15:09:35 · 77 阅读 · 0 评论