C++算法模板集合】的更多相关文章

我的常用刷题网站:http://218.5.5.242:9018/JudgeOnline/ https://www.luogu.com.cn/ 排序 选择排序(selection sort) 1 void selection(int n,int* a){ 2 for (int i = 0;i < n;i++){ 3 for (int j = i + 1;j < n;j++){ 4 if (a[i] > a[j]){ 5 swap(a[i],a[j]); 6 } 7 } 8 } 9 } 选…
最短路算法&模板 最短路问题是图论的基础问题.本篇随笔就图论中最短路问题进行剖析,讲解常用的三种最短路算法:Floyd算法.Dijkstra算法及SPFA算法,并给出三种算法的模板.流畅阅读本篇博客需要有图论的基础知识,了解什么是图,什么是最短路,以及一些基本语法知识和算法基础. 1.Floyd算法 我个人认为,Floyd算法是三种最短路算法中最简单.最好理解的算法.它的适用范围是任意两点之间的最短路.这一点是其他两种算法(单源最短路)无法比拟的.它的实现思路也很简单:用三重循环,枚举断点.起始…
匈牙利 算法 一. 算法简介 匈牙利算法是由匈牙利数学家Edmonds于1965年提出.该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法. 二分图的定义: 设G=(V,E)是一个无向图,顶点集V可分割为两个互不相交的子集V1,V2,那么称此图G为二分图. 例如,下图就是一个二分图: 二分图的匹配: 二分图中的子图中,每个节点只连一条边,则称该子图是二分图中的一个匹配. 极大匹配: 无法再向二分图中加入边,使得满足匹配条件. 最大匹配: 所有极大匹配中边数最多的一个匹配. 完…
Tarjan 算法 一.算法简介 Tarjan 算法一种由Robert Tarjan提出的求解有向图强连通分量的算法,它能做到线性时间的复杂度. 我们定义: 如果两个顶点可以相互通达,则称两个顶点强连通(strongly connected).如果有向图G的每两个顶点都强连通,称G是一个强连通图.有向图的极大强连通子图,称为强连通分量(strongly connected components). 例如:在上图中,{1 , 2 , 3 , 4 } , { 5 } ,  { 6 } 三个区域可以相…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2255 题意:有N个人跟N个房子,每个人跟房子都有一定的距离,现在要让这N个人全部回到N个房子里面去,要求所有人回去的距离最短. KM算法模板题~ #include "stdio.h" //hdu 2255 #include "string.h" #include "stdlib.h" #define N 305 #define INF 0x3ffff…
POJ 1273给出M条边,N个点,求源点1到汇点N的最大流量. 本文主要就是附上dinic的模板,供以后参考. #include <iostream> #include <stdio.h> #include <algorithm> #include <queue> #include <string.h> /* POJ 1273 dinic算法模板 边是有向的,而且存在重边,且这里重边不是取MAX,而是累加和 */ using namespace…
The Perfect Stall Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 20874   Accepted: 9421 Description Farmer John completed his new barn just last week, complete with all the latest milking technology. Unfortunately, due to engineering pr…
国内大学毕业论文LaTeX模板集合 薛瑞尼的清华大学学位论文LaTeX模板http://sourceforge.net/projects/thuthesis/ 北大论文文档 LaTeX 模板 pkuthss v1.2 betahttp://bbs.pku.edu.cn/bbs/bbstcon.PHP?board=MathTools&threadid=11364449 刘本源的国防科学技术大学研究生学位论文LaTeX模板http://code.google.com/p/nudtpaper/ 南开大…
dijkstra算法模板 http://acm.hdu.edu.cn/showproblem.php?pid=1874 #include<stdio.h> #include<string.h> #include<math.h> #include<iostream> #include<stdlib.h> #include<algorithm> #include<queue> #include<vector> #i…
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/7495310.html特别不喜欢那些随便转载别人的原创文章又不给出链接的所以不准偷偷复制博主的博客噢~~ 数据结构和算法模板系列之总览 很早前就打算将自己学过的数据结构和算法等知识和模板做个整理,但一直没有抽出时间来弄.现在打算抽空一点时间陆陆续续地将自己平时用的模板都贴上来,这里先做个综述. 主要针对那些想要准备机试.刷题或者刚刚接触ACM的初学者来说,对于A…
妖怪题目,做到现在:2017/8/19 - 1:41…… 不过想想还是值得的,至少邻接矩阵型的Dinic算法模板get√ 题目链接:http://poj.org/problem?id=1815 Time Limit: 2000MS Memory Limit: 20000K Description In modern society, each person has his own friends. Since all the people are very busy, they communic…
Drainage Ditches Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 45 Accepted Submission(s): 38   Problem Description Every time it rains on Farmer John's fields, a pond forms over Bessie's favorit…
题目大意:给一张无向图,求出最小树形图. 题目分析:套朱-刘算法模板就行了... 代码如下: # include<iostream> # include<cstdio> # include<cstring> # include<algorithm> using namespace std; # define LL long long # define REP(i,s,n) for(int i=s;i<n;++i) # define CL(a,b) me…
二分图:https://blog.csdn.net/c20180630/article/details/70175814 https://blog.csdn.net/flynn_curry/article/details/52966283 匈牙利算法模板:https://blog.csdn.net/sunny_hun/article/details/80627351 例题:hdu 1150 Machine Schedule 参考:https://www.cnblogs.com/qq-star/p…
题目链接 /* Name:hdu-3068-最长回文 Copyright: Author: Date: 2018/4/24 16:12:45 Description: manacher算法模板 */ #include <iostream> #include <cstdio> #include <string> #include <cstring> #include <math.h> #include <algorithm> using…
 题目链接 /* Name:hdu-1102-Constructing Roads Copyright: Author: Date: 2018/4/18 9:35:08 Description: prime算法模板 */ #include <iostream> #include <cstdio> #include <cstring> #include <utility> #include <vector> using namespace std;…
匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名.匈牙利算法是基于Hall定理中充分性证明的思想,它是部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法. 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2063 题目大意: 中文题目,点进去马上知道. 解题思路: 这道题目就是求最大匹配数目,直接套用匈牙利算法模板,这个算法大概原则就是:有机会上,没有机会创造机会也要上. 代码: #inc…
题意:给你两个串,问你第二个串是从第一个串的什么位置開始全然匹配的? kmp裸题,复杂度O(n+m). 当一个字符串以0为起始下标时.next[i]能够描写叙述为"不为自身的最大首尾反复子串长度". 当发生失配的情况下,j的新值next[j]取决于模式串中T[0 ~ j-1]中前缀和后缀相等部分的长度, 而且next[j]恰好等于这个最大长度. 防止超时.注意一些细节.. 另外:尽量少用strlen.变量记录下来使用比較好,用字符数组而不用string //KMP算法模板题 //hdu…
#include<stdio.h> #include<queue> #include<string.h> using namespace std; #define inf 0x3fffffff #define N 200 struct node { int v,w,next; }bian[N*N*2],fbian[N*N*2]; int head[N],yong,tt; int deep[N];//深度保留层次图 void addedge(int u,int v,int…
Internet 上有很多基于 (X)HTML/CSS 标记的模板.如果你是一个 Web 开发人员,你不希望把时间一次又一次地浪费在重复代码设计上面,这里提供了一个列表,提供了基于 CSS 的免费模板,几乎所有的资源都配有图片以及完整的布局结构.有些资源已经在 diglog 出现过了,这里正好做一个汇集. Open Source Templates 是一个免费的 CSS 以及 XHTML 开源模板设计社区. OSWD 是一个免费下载 Web 设计模板以及分享的社区,现在已经有 2080 个设计者…
题意:多次询问,求在一个区间中,有多少种珠子: 思路:莫队算法模板题目: 参考:https://www.cnblogs.com/RabbitHu/p/MoDuiTutorial.html #include <iostream> #include <cstdio> #include <algorithm> using namespace std; ,maxn = ,maxm = ; ],ans[maxm],sum=; #define bel(x) ((x-1)/Block…
[算法模板]FFT-快速傅里叶变换 感谢ZYW聚聚为我们讲解FFT~ 思路 我懒,思路和证明部分直接贴链接: rvalue LSJ-FFT与NTT基础 代码 主要思想是利用了单位根特殊的性质(n次单位根后一半幂跟前一半幂取值相等).只是因为式子中奇数次幂还要提出来个\(\omega_n^k\),这个东西只要取个反就好了(即对称性:\(\omega_n^k=-\omega_n^{k+\frac{n}{2}}\)). FFT递归: #include <cstdio> #include <cm…
[算法模板]SOS DP 正文 SOS-DP(\(\text{Sum over Subsets}\))是用来解决这样的问题的: 其实就是子集和DP.上面每个\(F[mask]\)里面包含了\(mask\)所有二进制子集的信息.这是一种\(n\log_2 n\)的DP方法. 我们定义一个DP状态\(S(mask,i)\)代表\(mask\)子集中只有最靠右的\(i\)位与其不同的状态. 具体是这样的: 图中描述了\(S(10110,4)\)这个状态和其所有儿子之间的关系. 形象一些解释就是每次我们…
[算法模板]Kruskal重构树 kruskal重构树是一个很常用的图论算法.主要用于解决u->v所有路径上最长边的最小值,就是找到\(u->v\)的一条路径,使路径上的最长边最小. 图片来自Kruskal重构树学习笔记+BZOJ3732 Network 从上图我们可以看出,kruskal重构树有以下特质: 每个原图上的节点一一对应重构树上的叶子节点. 重构树上每一个其他节点(正方形)代表原图上的一个边,有点权. 重构树是一棵二叉树. 重构树是一个二叉堆.(所以两个叶子节点的LCA即为路径上的…
dfs算法模板: 1.下一层是多节点的dfs遍历 def dfs(array or root, cur_layer, path, result): if cur_layer == len(array) or not root: result.append(path) return for i in range(cur_layer, len(array)): do something with array[cur_layer:i+1] or nodes with this layer path.a…
[算法模板]ST表 ST表和线段树一样,都能解决RMQ问题(范围最值查询-Range Minimum Query). 我们开一个数组数组\(f[maxn][maxn\log_2]\)来储存数据. 定义\(f[i][j]\)代表从\(i\)开始的\(2^{j}\)位这个区间的最大值. 初始化 因为\(f[i][0]=a[i]\),所以有: \[ f[i][j]=max(f[i][j-1],f[i+2^{j-1}][j-1]) \] 通过这个转移方程即可构造出\(f\). 查询 查询区间\([l,r…
ACM算法模板 · 一些常用的算法模板-模板合集(打比赛专用)…
\(EK\) 算法模板 #include <iostream> #include <queue> #include<string.h> using namespace std; #define arraysize 201 int maxData = 0x7fffffff; int capacity[arraysize][arraysize]; //记录残留网络的容量 int flow[arraysize]; //标记从源点到当前节点实际还剩多少流量可用 int pre[…
一:dijkstra算法时间复杂度,用优先级队列优化的话,O((M+N)logN)求单源最短路径,要求所有边的权值非负.若图中出现权值为负的边,Dijkstra算法就会失效,求出的最短路径就可能是错的. 设road[i][j]表示相邻的i到j的路长U集合存储已经求得的到源点最短路径的节点,S集合表示还没求得的节点dis[i]表示i到源节点(设为0)的最短路径vis[i]=1表示i节点在U集合中 刚开始dis[0]=0,vis[0]=1;dis[i]=maxn,vis[i]=0;for 1 to…
Dual Core CPU Time Limit: 15000MS   Memory Limit: 131072K Total Submissions: 24830   Accepted: 10756 Case Time Limit: 5000MS Description As more and more computers are equipped with dual core CPU, SetagLilb, the Chief Technology Officer of TinySoft C…