自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 【油井问题】线性时间选择问题

北理工乐学题目:主油管道为东西向,确定主油管道的南北位置,使南北向油井喷油管道和最小。要求线性时间完成。1<= 油井数量 <=2 000 000输入要求:输入有油井数量行,第 K 行为第 K 油井的坐标 X ,Y 。其中, 0<=X<231,0<=Y<231输出要求:输出有一行, N 为主管道最优位置的最小值注意:用快排做的不给分!!测试输入...

2020-07-13 20:35:47 908

原创 【套圈问题】最近点对问题的探讨

最近点对问题算法最近点对问题是一种很典型的递归分治算法,我们知道,递归分治的核心步骤就是分治合这里我们怎么分,怎么治,怎么合,便是一个值得探讨的问题。先给出应用的结构体和主函数:struct node{ double x; double y;}X[100001],tmp[100001];int main(){ int N,i; scanf("%d",&N);...

2020-07-13 20:35:26 651

原创 【最长递增子序列】动态规划

问题描述:输入一组乱序的数据,输出这组数据的最长的递增序列,如输入X[ ] = (2 8 9 4 6 1 3 7 5 10),则输出(2 4 6 7 10)求解最长递增子序列的问题,我们考虑用动态规划,而动态规划,我们就得弄清楚子问题,最终的解决办法如下:1.在遍历数据的过程中,记录下排第几的数是哪一位,用L[ ]数组来记录,用len来表示当前的最高位的位数;2.遍历遇到比最高位还大的数X...

2020-07-13 20:34:28 262

原创 【MST最短路径】Prim算法和Kruskal算法

最小生成树问题有两种经典的算法,分别是Prim和Kruskal,他们的代码有很多种,但要使复杂度更低,算法的具体实现过程还是值得讨论的:这里分别给出相对复杂度更低一点的代码:Prim:struct node{ int u,w; node(){}; node(int a, int b) { this->u = a; this->w = b; }//构造函数 bo...

2020-07-13 20:34:21 267

原创 【哈夫曼编码】二叉树实现以及贪心算法

问题描述:给定一段文字,求出占用位数最小的前缀码。名词解释:前缀码:任何代码都不是其他代码的前缀,比如:l ----> 0o ----> 10v ----> 110e ----> 1110那么单词“love”的前缀码就是: 0101101110问题解释:求给定文字的最小前缀码,即根据频率来确定每一个字母的...

2020-07-13 20:34:06 681

原创 【旅行售货员问题】回溯搜索

问题描述:比如此图的路线:从【1】出发遍历每一个点而后回到【1】,走哪条路线更短(有一点点像哈密顿图的形式)分析:我们有【1234】、【1243】、【1324】、【1342】、【1423】、【1432】共六种走法,似乎可以直接遍历搜索,但如果节点数增加到很多,那就是一个问题了,所以我们用回溯遍历的方法,在回溯的过程中注意【剪枝】即可。输入数据:此处我们采用数组(矩阵)来输入数据:i...

2020-07-13 20:33:58 186

原创 【最大流问题】增广路径——看这一篇就够了!

问题描述:求一个有向图从起点(s)到终点(t)流量的最大值:如图所示:解题算法:Ford-Fulkerson算法:1.从零流开始2.当剩余网络中有增广路径时(BFS),3.找一条增广路径(DFS),增大流,4.输出流量算法步骤:1.输入数据:这个题目数据输入是一个很关键的点,我们用结构体来存储数据,但这里应该怎么存储图是一个值得思考的问题。经过尝试,我们发现,用结构体来存储边且...

2020-07-13 20:33:48 13349

原创 【0-1背包、分数背包、最优装载、装载问题】动态规划、贪心、回溯

A.0-1背包问题:n件物品重W[1:n],价值V[1:n],背包容量为C1.动态规划: 动态规划即找准dp的表达式,分析0-1背包问题是需要找到背包最多能装多大价值的物品,那么此处我们的dp[i][j],就如此来定义:dp[i][j]代表前i件物品,装入容量为j的背包的最大价值,比如dp[0][j] = 0, dp[i][0] = 0,dp[n][C]就是我们最后要求的装...

2020-07-13 20:33:39 821

原创 【装载问题】回溯与分支限界

问题描述:给定一批货物的重量W[1:n],有一艘船可以装载C重量的货物,问这艘船最多可以装多重的货物?问题分析:这个很典型地可以想到用回溯的方法,比如三件货物重16,15,15,船可装30重的货物,那么我们就排数:000 001 010 011 100 101 110 111地选:void backtract(t){ if(t > n) { if (cw > bes...

2020-07-13 20:33:26 544

原创 【最大团问题、0-1背包】再谈分支限界

对于分支限界,其实思想和回溯很像,只是具体的实现方法不一样。回溯用到递归,是深度优先搜索;分支限界是用最大堆进行循环,是广度优先搜索。1.最大团问题:给出一个无向连通图,求出其最大完全子图的节点数:分析:每一个节点进行分析,如果可以放进去,则定为1,放入左节点,要是不能放进去,则定为0,放入右节点。此处用分支限界思想,没有上界,下界为bestn,关键值cn + n - t,记录(t, cn, X)int bestn = 0;//bestn是当前完全子图节点数目的最大值int cn = 0;//

2020-07-13 20:33:14 503

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除