
知识点
隔阂0323
加速零到一百公里
展开
-
并查集
http://www.cnblogs.com/hapjin/p/5478352.htmlhttps://www.cnblogs.com/xzxl/p/7226557.html(侵删)转载 2018-12-19 19:46:35 · 86 阅读 · 0 评论 -
二分图匹配
匈牙利算法(求最大匹配)置M为空 找出一条增广路径p,取反得到更大的匹配M ’ 代替M 重复2,直到找不出增广路径无向图模板/*从u开始找一个为访问的邻接点v 如果v未被匹配,则找到增广路 如果v已经匹配,则取出v的匹配顶点w,(w,v)已经被匹配,则取反,将 (w,v)改为未匹配,(u,v)设为匹配条件是从w为起点找到新的增广路径 */#include<c...原创 2019-03-15 13:20:53 · 112 阅读 · 0 评论 -
LCA总结
LCA(Least Common Ancestors) ,即最近公共祖先,在一棵有根树中,找出某两个节点u和v最近的公共祖先。LCA可以分为在线算法和离线算法在线算法:指程序可以以序列化的形式一个一个输入,也就是说一开始并不知道所有输入。 离线算法:指一开始就知道问题的所有数据,而在解决问题后立即输出结果。1.LCA倍增算法 (在线)时间复杂度:O((n+q)l...转载 2019-03-20 13:57:38 · 887 阅读 · 0 评论 -
LCA总结
概述篇LCA (Least Common Ancestors) ,即最近公共祖先,是指这样的一个问题:在一棵有根树中,找出某两个节点 u 和 v 最近的公共祖先。LCA 可分为在线算法与离线算法在线算法:指程序可以以序列化的方式一个一个处理输入,也就是说在一开始并不需要知道所有的输入。 离线算法:指一开始就需要知道问题的所有输入数据,而在解决一个问题后立即输出结果。 算法篇...转载 2019-03-27 13:22:13 · 1734 阅读 · 0 评论 -
差分约束算法总结
差分约束系统一、概念如果一个系统由n个变量和m个约束条件组成,形成m个形如ai-aj≤k的不等式(i,j∈[1,n],k为常数),则称其为差分约束系统。二、引例给定n个变量和m个不等式,每个不等式的形式为 x[i] - x[j] <= a[k] (0 <= i, j < n, 0 <= k < m, a[k]已知),求 x[i] -...转载 2019-04-01 20:59:29 · 308 阅读 · 0 评论 -
STL string中find()的用法
STL的string中函数find(),用来返回子串sub在主串str中出现的位置(比kmp要快)#include<string>#include<iostream>using namespace std;int main(){ string str,sub; cin>>str; cin>>sub; in...原创 2019-04-14 22:34:10 · 1994 阅读 · 0 评论 -
一维前缀和、二维前缀和与一维差分、二维差分
前缀和1.一维前缀和引入:有一串长度为n的数列a1,a2,a3......an,再给出m个询问,每次询问给出L,R两个数,要求给出区间[L,R]里的数的和朴素方法:对于m次询问,每次都遍历一遍所给的区间,计算出答案,时间复杂度O(n*m);利用前缀和:我们定义前缀和sum[i]表示a1+a2+...+ai;区间[L,R]里的数的和即为sum[R]-sum[L-1],时间复杂度降到O...原创 2019-04-23 13:45:47 · 1086 阅读 · 3 评论 -
最大流之Dinic
网络流基本概念什么是网络流在一个有向图上选择一个源点,一个汇点,每一条边上都有一个流量上限(称为容量),即经过这条边的流量不能超过这个上界。同时,除源点和汇点外,所有点的入流和出流都相等,而源点只有流出的流,汇点只有汇入的流。这样的图叫做网络流。所谓网络或容量网络指的是一个连通的赋权有向图 D= (V,E,C) , 其中V 是该图的顶点集,E是有向边(即弧)集,C是弧上的容量。此外顶...转载 2019-04-24 20:45:25 · 184 阅读 · 0 评论 -
最大流最小割定理
最大流最小割定理是网络流理论的重要定理。是指在一个网络流中,从源点到达汇点的最大流量==如果从网络中移除某些边就能够导致网络流中断的边的集合的最小容量和(这些边的权值之和)。即在任何网络中,最大流的值等于最小割的容量。...原创 2019-04-24 20:52:59 · 711 阅读 · 0 评论 -
C++ STL map
转自:https://blog.youkuaiyun.com/sevenjoin/article/details/819438641,map简介map是STL的一个关联容器,它提供一对一的hash。 1.第一个可以称为关键字(key),每个关键字只能在map中出现一次; 2.第二个可能称为该关键字的值(value);map以模板(泛型)方式实现,可以存储任意类型的数据,包括使用者...转载 2019-03-07 16:40:37 · 93 阅读 · 0 评论 -
Tarjan算法(转)
转自:https://www.cnblogs.com/shadowland/p/5872257.html?tdsourcetag=s_pcqq_aiomsg一.算法简介Tarjan 算法一种由Robert Tarjan提出的求解有向图强连通分量的算法,它能做到线性时间的复杂度。我们定义:如果两个顶点可以相互通达,则称两个顶点强连通(strongly connected)。如果有向图G的每两...转载 2019-03-10 15:47:47 · 242 阅读 · 0 评论 -
树的dfs
定义:树的dfs遍历就是对于一个树上每个点root,它向下的多个分支,选择一个分支一直走下去,直至走完并回溯到root再走其他分支形成的遍历。#include<cstdio>#include<cstring>using namespace std;const int maxn=100;const int maxm=10000;int head[maxn...原创 2019-03-10 13:57:51 · 1267 阅读 · 0 评论 -
数位DP入门
数位dp一般应用于:求出在给定区间[A,B]内,符合条件P(i)的数i的个数.数位DP是一个模板化的东西,dp[i][…]表示i位数中符合条件xx的数的个数。转载 2019-01-25 13:48:44 · 145 阅读 · 0 评论 -
扩展KMP算法
转自:https://blog.youkuaiyun.com/dyx404514/article/details/41831947拓展kmp是对KMP算法的扩展,它解决如下问题:定义母串S,和字串T,设S的长度为n,T的长度为m,求T与S的每一个后缀的最长公共前缀,也就是说,设extend数组,extend[i]表示T与S[i,n-1]的最长公共前缀,要求出所有extendi。注意到,如果有一个位置ex...转载 2019-02-14 17:57:35 · 368 阅读 · 0 评论 -
Manacher's Algorithm 马拉车算法
转自:https://www.cnblogs.com/grandyang/p/4475985.html这个马拉车算法Manacher‘s Algorithm是用来查找一个字符串的最长回文子串的线性方法,由一个叫Manacher的人在1975年发明的,这个方法的最大贡献是在于将时间复杂度提升到了线性,这是非常了不起的。对于回文串想必大家都不陌生,就是正读反读都一样的字符串,比如 “bob”, “l...转载 2019-02-20 10:04:46 · 140 阅读 · 0 评论 -
图的存储---邻接表
邻接表是图的常用存储结构之一,由表头结点和表结点两部分组成,表头节点存储图的各个顶点,表结点存储表头结点相邻顶点以及它们之间的边权。该邻接表所对应的图如图所示 0与1,3相连 1与 0,2,3相连 2与1相连 3与0,1相连邻接表基本有两种实现方式:1.静态链表#include<cstdio>#include&l...原创 2019-03-04 21:35:32 · 1986 阅读 · 0 评论 -
树的直径
定义:给定一棵树,树中每条边都有一个权值,树中两点之间的距离定义为连接两点的路径边权之和。树中最远的两个节点之间的距离被称为树的直径,连接这两点的路径被称为树的最长链。求法:以树中任意一点为起点,找到距离该点最远的点u,然后以u为起点,找到距离u最远的点v,uv之间的距离就是树的直径#include<cstdio>#include<cstring>#inclu...原创 2019-03-05 09:07:19 · 180 阅读 · 0 评论 -
拓扑排序
定义:在一个有向无环图中,规定<u,v>表示一条由u指向v的有向边,要求对所有节点进行排序,使得每一条有向边<u,v>中u排在v的前面用途:寻找一个,或满足特定要求的拓扑序列 判断有向图是否有环 做分层实现方法:从有向图中选择一个入度为0的点并输出 从图中删除该顶点以及以该顶点为起点的所有边 重复上述两步,直到所有顶点输出,或当前图中不存在入度为0的点...原创 2019-03-05 09:50:41 · 120 阅读 · 0 评论 -
单源最短路算法
最短路径:从某顶点出发,沿图的边到达另一顶点所经过的路径中,各边权值之和最小的一条路径单源最短路:在图中,指定一个点为源,求源到其它各点的最短路径1.Dijkstra算法 o(nlogn)流程录入图的信息并完成初始化 找到目前离源节点最近的点P 利用P的所有出边优化源节点到P出边邻近节点的边权值 图除了源节点其余n-1个结点都优化过,那么进行5,否则进行2 输出...原创 2019-03-05 13:18:31 · 416 阅读 · 0 评论 -
最小生成树
生成树:一个连通图的生成树是一个极小连通子图,它包含图中所有顶点(假设有n个),只有n-1条边 生成树不唯一 生成树的代价:等于该树各边权值之和 最小生成树就是最小代价生成树 构造最小生成树的方法:①kruskal ②PrimKruskal算法初始时,T=(V,{∅}),即各点自为连通分量 选择一条u,v属于不同连通分量且(u,v)最小的边 将(u,v)加入T 重复2,...原创 2019-03-08 22:17:22 · 251 阅读 · 0 评论 -
博弈论与SG函数
引例:有n堆石子,每次可以从第1堆石子里取1颗、2颗或3颗,可以从第2堆石子里取奇数颗,可以从第3堆及以后石子里取任意颗,问你必胜策略。这种变形的nim博弈感觉并不容易,如何去找必胜策略呢?往下看什么是公平组合游戏?公平组合游戏:Impartial Combinatorial Games(简称ICG)公平组合游戏的条件:有两名选手交替行动,每一步选手都可以在合法移动中任选一种行动;...原创 2019-05-08 15:38:01 · 546 阅读 · 1 评论