摘要: KM算法用来求二分图最大权完美匹配 一般对KM算法的描述,基本上可以概括成以下几个步骤: (1) 初始化可行标杆 (2) 用匈牙利算法寻找完备匹配 (3) 若未找到完备匹配则修改可行标杆 (4) 重复(2)(3)直到找到相等子图的完备匹配 二分图匹配里面我们找最大边进行连边! 但是遇到某个点被匹配了 阅读全文
posted @ 2020-06-14 16:26 私の目を見て 阅读(624) 评论(0) 推荐(0) 编辑
摘要: ###最小点覆盖 #####概念: 用一个点集(点集的数量尽可能小),让每条边都至少和其中一个点关联(边的两端有一端在点集里就算有关联) 最小点覆盖是覆盖所有的边 最小点覆盖==最大边匹配(匈牙利算法) ###最小边覆盖 #####概念: 用一个边集(边集的数量尽可能小),让每一个点最少于其中的一条 阅读全文
posted @ 2020-06-14 16:23 私の目を見て 阅读(191) 评论(0) 推荐(0) 编辑
摘要: ####二分图定义: 顶点集V可分割为两个互不相交的子集,并且图中每条边依附的两个顶点都分属于这两个互不相交的子集,两个子集内的顶点不相邻。同一个子集中没有两个点直接相连。 图中没有含奇数条边的环。任何无回路的的图均是二分图。 ####二分图的判定: 如图一个二分图FIG.1都可以分成两个互不相交的 阅读全文
posted @ 2020-06-14 16:21 私の目を見て 阅读(192) 评论(0) 推荐(0) 编辑
摘要: #多边形面积 改革春风吹满地 #include<bits/stdc++.h> using namespace std; struct point { double x,y; }node[10001]; double cosr(point a,point b,point c) { return (a. 阅读全文
posted @ 2020-06-14 16:17 私の目を見て 阅读(177) 评论(0) 推荐(0) 编辑
摘要: ##利用单调栈,可以找到从左/右遍历第一个比它小/大的元素的位置. #####假设有一个单调栈S和一个数组a[5]; #####有一个记录数组L[5],序号由1-5,表示a[i]向左遍历第一个比a[i]小的数的下标; a[5]:3 5 7 4 6 当a[1]=3压入栈中,是空栈,L[1]=0; 当a 阅读全文
posted @ 2020-06-14 16:15 私の目を見て 阅读(334) 评论(0) 推荐(0) 编辑
摘要: ##单调栈 向右寻找比自己大的第一个数 poj 3250 Bad Hair Day #include<iostream> #include<cstdio> #include<stack> #define M 80100 #define ll long long using namespace std 阅读全文
posted @ 2020-06-14 16:13 私の目を見て 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 最小生成树大家都会,但是次小生成树呢?生成树算法在计算机运用广泛啊!!!! 先来讲一下定义: 设 $G=(V,E,w)$是连通的无向图,\(T\) 是图$G$ 的一棵最小生成树。如果有另一棵树$T1$,满足不存在(找不到)树$T’$,\(W_{T’}<W_{T1}\),则称T1是图G的次小生成树。( 阅读全文
posted @ 2020-06-14 16:06 私の目を見て 阅读(159) 评论(0) 推荐(0) 编辑
摘要: ##次短路 #####(一) 从$u$(父节点)到$v$(子节点)次短路直接更新(通常在最短路已经确定的情况下才进行直接更新次短路) 从$u$(父节点)到$v$(子节点)最短路不更新,但是距离比次短路距离小,更新次短路 从$u$(父节点)到$v$(子节点)最短路更新,原来的最短路就成了次短路 数组$ 阅读全文
posted @ 2020-06-14 16:00 私の目を見て 阅读(269) 评论(0) 推荐(0) 编辑
摘要: Power Tower ###题意: 一个序列有$n$个数,$q$次询问,将$l$到$r$这个区间的数叠起来模上$M$ ###思路: 欧拉降幂 #include<bits/stdc++.h> #define ll long long using namespace std; map<ll,ll>mp 阅读全文
posted @ 2020-06-14 15:55 私の目を見て 阅读(174) 评论(0) 推荐(0) 编辑
摘要: Caesar Cipher ####题意: 凯撒密码加密,输出对应的密文的明文 ####思路: 加密是将明文向右移位,那么解密就是将密文向左移位。 注意:A向左一位是Z #include<bits/stdc++.h> #define ll long long using namespace std; 阅读全文
posted @ 2020-06-14 15:51 私の目を見て 阅读(172) 评论(0) 推荐(0) 编辑
摘要: ####祭祀river ####题意: 在有向无环图中找尽可能多的点使这些点任意两点都不能通过已知的边到达对方(最大反链(点集)) (区别最大点独立集) ####思路: 最大反链==最小可相交路径覆盖 #include<bits/stdc++.h> using namespace std; int 阅读全文
posted @ 2020-06-14 15:48 私の目を見て 阅读(147) 评论(0) 推荐(0) 编辑
摘要: Aho-Corasick automation,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法之一。一个常见的例子就是给出n个单词,再给出一段包含m个字符的文章,让你找出有多少个单词在文章里出现过。要搞懂AC自动机,先得有模式树(字典树)Trie和KMP模式匹配算法的基础知识。KMP算法是 阅读全文
posted @ 2020-06-14 15:46 私の目を見て 阅读(140) 评论(0) 推荐(0) 编辑
摘要: ###阶 定义: 设$p>1,gcd(a,p)==1$,那么使得$a^r≡1\ (mod\ \ \ p)$成立的最小正整数$r$就称为$a$模$p$的阶.记作$ord_p(a)$ 并且$ord_p(a)$总是可以整除$φ(p)$即$φ(p)$是$ord_p(a)$ \(\because a^{φ(p 阅读全文
posted @ 2020-06-14 15:44 私の目を見て 阅读(421) 评论(0) 推荐(0) 编辑
摘要: 记:\(Z_m=\{0,1,2,...,m-1\}\) **定义:**设$A$是定义在集合$Z_m$上的$n$阶方阵,若存在一个定义在$Z_m$上的方阵$B$,使得$AB=BA=E(mod\ \ p)$ 则称$A$模$p$可逆,$B$为A的模$p$逆矩阵,记为 \(B=A^{-1}(mod\ \ p 阅读全文
posted @ 2020-06-14 15:41 私の目を見て 阅读(2506) 评论(0) 推荐(0) 编辑
摘要: ####$Merkle-Hellman$背包密码体制 加密: 选择任何一个超递增集\(\{s_1,s_2,...,s_n\}\)。陷门有任意大于$\sum_is_i$的素数$p$和任意小于$p$的整数$a$组成,这两个数和集合${s_1,s_2,...,s_n}\(都是保密的。公开的整数集是\){t 阅读全文
posted @ 2020-06-14 15:36 私の目を見て 阅读(351) 评论(0) 推荐(0) 编辑
摘要: ###Elgamal: 加密 随机选择一个质数$p$,并且求出模$p$情况下的本原根\(\alpha\),并将$p,\alpha$公开 随机选择一个整数$a$,作为私钥,并对$a$保密。 计算出公钥$A=\alpha^(\ \ \ mod\ \ \ p)$ 对于一段明文$x$,随机选择一个整数$b$ 阅读全文
posted @ 2020-06-14 13:05 私の目を見て 阅读(538) 评论(0) 推荐(0) 编辑