算法
文章平均质量分 84
严霜九月丶
这个作者很懒,什么都没留下…
展开
-
归并排序(分治思想)
归并排序:归并排序(英语:Merge sort,或mergesort),是创建在归并操作上的一种有效的排序算法。1945年由约翰·冯·诺伊曼首次提出。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。由于归并排序分治出来是一棵二叉树,复杂度T(n)=Θ(nlog(n)),归并排序算法是一种稳定的排序算法。贴上C语言的代码void...原创 2018-08-21 15:09:30 · 542 阅读 · 0 评论 -
紫数八数码问题(bfs+哈希判重)
#define _CRT_SECURE_NO_WARNINGS#include <cstring>#include <cstdio>#include <algorithm>#include <vector>using namespace std;const int maxnstate = 1000000;//最大状态数const in...原创 2019-03-28 15:55:16 · 223 阅读 · 0 评论 -
例题11-6 这不是bug,而是特性(It's not a Bug, it's a Feature!, UVa 658)(隐式图+最短路+位运算)
题目https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=8&page=show_problem&problem=599分析:翻译补丁在修正bug时,有时也会引入新的bug。假定有n(n≤20)个潜在bug和m(m≤100)个补丁,每个补丁用两个长度为...原创 2019-04-11 19:09:03 · 275 阅读 · 0 评论 -
UVa-10735(Euler CirCuit)
题目链接https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=853&page=show_problem&problem=1676题目大概意思就是给出V个顶点E条边,边可以是有向边也可以是无向边,给定一个混合网络,求一条欧回路紫书上的思路大概意思:将无...原创 2019-04-16 18:33:19 · 167 阅读 · 0 评论 -
Kdmonds-Karp(增广路算法)和BellmanFord算法
最大流(Kdmonds-Karp)算法#include <iostream>#include <queue>#include <cstring>#include <vector>using namespace std;const int maxn = 1000 + 10;const int inf = 0x3f3f3f3f;st...原创 2019-04-13 17:47:10 · 152 阅读 · 0 评论 -
poj 1251(kruskal模板题)
http://poj.org/problem?id=1251scanf会爆栈,不知为啥#include <cstdio>#include <algorithm>#include <iostream>#include <cstring>using namespace std;const int maxn=30+10;int fa...原创 2019-05-09 11:06:46 · 113 阅读 · 0 评论 -
hdu 4280(最大流ISAP)
http://acm.hdu.edu.cn/showproblem.php?pid=4280模板题裸的最大流,n和m较大,时间卡的紧,要用堆栈加bfs优化#include <cstdio>#include <cstring>#include <queue>#include <vector>#include <algorithm...原创 2019-05-14 10:59:54 · 167 阅读 · 0 评论 -
poj 1679(次最小生成树模板)
http://poj.org/problem?id=1679#include <cstring>#include <cstdio>#include <vector>#include <algorithm>using namespace std;int n,m;const int maxn=100+10;const int inf=...原创 2019-05-11 19:12:05 · 102 阅读 · 0 评论 -
poj 3281(拆点+最大流)
http://poj.org/problem?id=3281注意:拆牛的时候左边牛标1右边标2,再左边标3右边标4,不是左边1-n,右边n+1-2*n#include <cstdio>#include <cstring>#include <algorithm>#include <vector>#include <queue&g...原创 2019-05-12 16:31:04 · 127 阅读 · 0 评论 -
状压dp
例题:https://blog.csdn.net/accry/article/details/6607703位运算基础:https://blog.csdn.net/u013377068/article/details/81028453转载 2019-05-25 17:24:34 · 93 阅读 · 0 评论 -
poj 1087(最大流)
http://poj.org/problem?id=1087在紫数上这个题是最大流的例题上面有详细解释,读题像在做阅读理解,贴两种LRJ的代码第一种:直接建图跑最大流#include<iostream>#include<map>#include<string>#include<vector>#include<cstring...原创 2019-05-12 20:51:29 · 242 阅读 · 0 评论 -
poj 1065
https://blog.csdn.net/u011008379/article/details/50725927http://www.cnblogs.com/fstang/archive/2013/03/31/2991255.htmlhttp://www.hankcs.com/program/cpp/poj-1065-wooden-sticks.html转载 2019-05-22 17:17:36 · 149 阅读 · 0 评论 -
动态规划大总结
背包问题01背包完全背包多重背包混合背包基础dp区间dp四边形不等式优化数位dp斜率dp基础位运算几个基础例题背包问题01背包是最基础的背包问题,也是很重要的背包,所有有关背包的问题都可一转化为01背包。上个poj的例题POJ3624题目大概意思是要在m的容量中求最大价值如果定义二维数组状态转移方程:dp[i][j]=max(dp[i-1][j-w[i...原创 2019-05-31 11:41:53 · 156 阅读 · 0 评论 -
筛选区间素数模板(poj2689)
#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> using namespace std; const int maxn = 100000 + 10; int prim...原创 2019-03-14 21:02:38 · 173 阅读 · 0 评论 -
数据结构和算法分析10.16(计算点对)
存在n个点,如果用穷举所有距离(N(N-1)/2个点对),时间辅助度为O(nlogn)。书上有严格的证明能分治在nlogn的时间界完成。#include <iostream> #include <algorithm> using namespace std; #define MAXN 100 struct Point//点结构体 { double x...原创 2019-02-08 16:05:10 · 96 阅读 · 0 评论 -
加勒比海盗船(最优装载问题)
问题描述:在北美洲东南部,有一片神秘的海域,那里碧海蓝天、阳光明媚,这正是传说中海盗最活跃的加勒比海,这里更是欧洲大陆的商旅舰队到达美洲的必经之地,所以当时的海盗活皇家舰......动非常猖獗,海盗不仅攻击过往商人,甚至攻击英国有一天,海盗们截获了一艘装满各种各样古董的货船,每一件古董都价值连城,一旦打碎就失去了它的价值。虽然海盗船足够大,但载重量为 C,每件古董的重量为 w i ,海盗们该...原创 2018-12-17 20:14:01 · 998 阅读 · 1 评论 -
高级钟点秘书(会议安排)
问题描述:所谓“钟点秘书”,是指年轻白领女性利用工余时间为客户提供秘书服务,并按钟点收取酬金。“钟点秘书”为客户提供有偿服务的方式一般是:采用电话、电传、上网等“遥控”式服务,或亲自到客户公司处理部分业务。其服务对象主要有三类:一是外地前来考察商务经营、项目投资的商人或政要人员,他们由于初来乍到,急需有经验和熟悉本地情况的秘书帮忙;二是前来开展短暂商务活动,或召开小型资讯发布会的国外客商;三是...原创 2018-12-18 20:08:19 · 414 阅读 · 0 评论 -
Dijkstra最短路径---贪心
问题描述:从图中的某个顶点出发到达另外一个顶点的所经过的边的权重和最小的一条路径,称为最短路径Dijkstra算法思想:该算法是解决单源最短路径的贪心算法,算法先从顶点集合中找到一个到源点最短路径的顶点,并将其从顶点集合中去掉,然后再从剩下的顶点集合中找到一个次最短距离的顶点,并将其从集合中去点,最后到顶点集合为空时,算法结束,最开始选择离源点最近的点t,将其从集合中去掉,再从集合中选...原创 2018-12-18 21:37:25 · 164 阅读 · 0 评论 -
哈夫曼编码
问题描述:如果我们有一个10万个字符的数据文件。每个字符出现的频率不同,现在我们要用最少的空间存储数据,也就是将这10万个数据进行编码,得到最优编码序列。问题分析:一般的编码有定长编码和不定长编码,如果采用定长编码,如果字符文件一共有6个字符,那么定长编码一个字符的长度为3(二进制编码),10万个字符编码需要30万个字节空间,如果字符文件的字符种类更多,随着字符种类的增加,需要的字节空...原创 2018-12-25 09:18:42 · 737 阅读 · 0 评论 -
最小生成树(Prim和Kruskal)
Prim:普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树。意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)),且其所有边的权值之和亦为最小。该算法于1930年由捷克数学家沃伊捷赫·亚尔尼克(英语:Vojtěch Jarník)发现;并在1957年由美国计算机科学家罗伯特·普里姆(英语:Rober...原创 2018-12-25 11:29:31 · 259 阅读 · 0 评论 -
poj1328 雷达安装问题
描述假设滑行是无限直线。土地位于海岸的一侧,海洋位于另一侧。每个小岛都位于海边。并且位于滑行的任何雷达装置只能覆盖d距离,因此如果它们之间的距离最多为d,则可以通过半径装置覆盖海中的岛屿。 我们使用笛卡尔坐标系,定义滑行是x轴。海侧在x轴上方,陆侧在下方。考虑到每个岛屿在海中的位置,并考虑到雷达装置覆盖范围的距离,您的任务是编写一个程序,以找到覆盖所有岛屿的最小数量的雷达装置。注意,岛的位置...原创 2019-01-04 14:45:22 · 806 阅读 · 0 评论 -
最长公共子序列(LCS)
LCS算是动态规划中比较经典的一道题目,很多书上都讲了这个,题目的描述大概就是有两个序列,从两个序列中找到一个序列(这个序列的长度<=两个序列长度的最小值)使得这个序列是开始的两个序列的子序列。这个题如果用穷举法将所有的序列找到,求出最长公共子序列,这种解法的复杂度是O(2^m)。因为是动态规划的经典题目,所有特点很明显。最优子结构(子问题的最优解是原问题的最优解),例如两个字符序列...原创 2019-01-10 20:13:52 · 389 阅读 · 0 评论 -
2-3树的插入和删除
2-3树是多路查找树中的一种,出现多路查找树,主要是跟内存与磁盘交互有关。内存IO的速度比磁盘IO要快的多的多,但是同样空间大小的内存比硬盘要贵的多的多,像TB级别的数据库不可能全部读出来放到内存中去,太过昂贵,而且也没必要,大部分数据是不经常用的,所以就需要内存与外存互相结合,而如果用平衡二叉树这种数据结构,在大数据量的情况下,树肯定会很高,树高直接决定了查找效率,而同等高的平衡二叉树中存储的信...原创 2019-01-05 16:23:00 · 1403 阅读 · 0 评论 -
快速排序
快速排序(Quicksort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序是一种原址排序算法,且不稳定。时间O(nlogn)#i...原创 2019-01-02 20:14:49 · 91 阅读 · 0 评论 -
0-1背包问题(回溯法)
回溯法是一种搜索技术,运用深搜,走不通就回到上一层,再从上一层找支路进行深搜,不行再回上一层。而直接一个回溯算法的好还程度在于搜索的解空间的大小和剪支函数的好坏。代码中的Bound是一个上界函数,判断做出了第i-1个选择后,1到(i-1)个物品已经确定,剩下的i到n个物品与已近装好的1到i-1个物品能构成的最大价值。代码:#include <iostream> #includ...原创 2019-01-19 08:46:32 · 416 阅读 · 0 评论 -
单纯形算法(线性规划)
在讲单纯形算法前,先讲一讲线性规划线性规划(Linear programming,简称LP)是运筹学中研究较早、发展较快、应用广泛、方法较成熟的一个重要分支,它是辅助人们进行科学管理的一种数学方法。研究线性约束条件下线性目标函数的极值问题的数学理论和方法。英文缩写LP。它是运筹学的一个重要分支,广泛应用于军事作战、经济分析、经营管理和工程技术等方面。为合理地利用有限的人力、物力、财力等资源作出...原创 2019-02-01 14:19:24 · 3670 阅读 · 1 评论 -
SAP和ISAP(网路最大流的两个增广路算法)
ISAP是对SAP进行优化后的算法,ISAP时间复杂度为O(V^2E),SAP的时间复杂度为O(VE^2) SAP#include <iostream> #include <algorithm> #include <iomanip> #include <queue> using namespace std; const int ...原创 2019-02-02 10:28:33 · 1899 阅读 · 0 评论 -
数据结构和算法分析10.2-a
https://blog.csdn.net/qq_29617037/article/details/51371460这篇文章有详细解释代码:#include <stdio.h> #include <stdlib.h> void Sort(int d[], int p[], int n) { int temp1, temp2; for (...原创 2019-02-04 11:47:30 · 140 阅读 · 0 评论 -
线段树入门(hdu 1166)点修改+区间求和
HDU1166题意:中文题。。线段树的入门题,线段树是支持一种区间操作的数据结构,时间复杂度能在O(m*logn)时间内完成,m是操作次数,线段树是一种树结构,每次不管是修改单点的值还是求和,只用维护一条简单路劲(从根到叶子节点)能在logn时间内完成,代码中建树过程从下到上建树,更新也是从下到上#include <cstring>#include <string>...原创 2019-06-20 15:46:01 · 151 阅读 · 0 评论