算法
文章平均质量分 75
Randyhe_
当你读我的博客,你学习啦,我也学习啦!!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
贪心算法--雷达安装(poj 1328)
雷达安装题目描述: 假定海岸线是一条无限延伸的直线,陆地在海岸线的一边,大海在另一侧。海中有许多岛屿,每一个小岛我们可以认为是一个点。现在要在海岸线上安装雷达,雷达的覆盖范围是d,也就是说大海中一个小岛能被安装的雷达覆盖,那么它们之间的距离最大为d。 我们使用平面直角坐标系,定义海岸线是x轴,大海在x轴上方,陆地在下方。给你海中每一个岛屿的坐标位置(x,y)和要安装的雷达所覆盖的范原创 2017-11-27 16:19:22 · 4739 阅读 · 2 评论 -
最小生成树--两种常见的写法;
普利姆最小生成树算法普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树。意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)),且其所有边的权值之和亦为最小。算法描述1).输入:一个加权连通图,其中顶点集合为V,边集合为E;2).初始化:Vnew =原创 2017-11-23 17:52:31 · 1972 阅读 · 0 评论 -
最小生成树--算法案列(poj1251)
Lagrishan的一个热带岛屿上的行政长官有一个问题要解决。他决定把几年前得到的外国援助资金用于修建村庄之间的道路。但是丛林比道路多太多了,使道路网络的维护太过于昂贵了。理事会必须选择停止维修一些道路。上述左侧图显示当前所有使用中的道路,以及现在每月的维护费用。当然,村庄之间必需有一些公路能够相通,即使路线并不像以前一样短。行政长官想告诉理事会怎样才使每月的花费最小,并且所维持的道路,将连接所有原创 2017-11-22 20:50:39 · 567 阅读 · 0 评论 -
最短路径--算法2
转自:http://developer.51cto.com/art/201403/433874.htm暑假,小哼准备去一些城市旅游。有些城市之间有公路,有些城市之间则没有,如下图。为了节省经费以及方便计划旅程,小哼希望在出发之前知道任意两个城市之前的最短路程。上图中有4个城市8条公路,公路上的数字表示这条公路的长短。请注意这些公路是单向的。我们现在需要求任意两个城市之间的最转载 2017-12-01 21:37:39 · 501 阅读 · 0 评论 -
最短路径--算法
[图的最短路径算法]Dijkstra, Bellman-Ford, Floyd-Warshall一. Dijkstra算法中文维基百科译为"戴克斯特拉"。很遗憾,这种算法不能解决权值为负的情况,可是谁叫我们一般情况下权值都是正值呢?它的主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。下面又开始了无耻的转载了......1. 算法思想设G=(转载 2017-12-01 20:55:22 · 420 阅读 · 0 评论 -
动态规划--(01背包 poj3624 )
关于背包问题:众所皆知,这里讲给出关于背包问题的一些简介:一个旅行者准备随身携带一个背包.可以放入背包的物品有n种,每种物品的重量和价值分别为 wj, vj .如果背包的最大重量限制是 b,怎样选择放入背包的物品以使得背包的价值最大? 题目就是这么简单:先思考一个问题:就是每种物品可以重复选择,这种要怎么解决:原创 2017-12-01 12:34:08 · 1644 阅读 · 1 评论 -
动态规划--(矩阵连乘 类似poj1651 )
poj1651:题的大意是:给出一组N个数,每次从中抽出一个数(第一和最后一个不能抽) ,该次的得分即为抽出的数与相邻两个数的乘积。直到只剩下首尾两个数为止。问最小得分是多少?这是一个矩阵连乘的稍稍变形:InputThe first line of the input contains the number of cards N (3 Output原创 2017-11-30 22:24:40 · 508 阅读 · 0 评论 -
动态规划--(加法表达式)
描述:有一个由1..9组成的数字串.问如果将m个加号插入到这个数字串中,在各种可能形成的表达式中,值最小的那个表达式的值是多少。输入:5 31 2 3 4 5输出:24设V(m,n)表示在n个数字中插入m个加号所能形成的表达式最小值,那么:if m = 0V(m,n) = n个数字构成的整数else if n V(m,n) = ∞原创 2017-11-30 17:04:32 · 660 阅读 · 0 评论 -
动态规划--(最长上升子序列 poj2533)
最长上升子序列 描述 一个数的序列bi,当b1 的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, …, aN),我们可以得到一些上升的子序列(ai1, ai2, …, aiK),这里1 。比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8)等等。这些子序列中最长的长度是4,比如子序列(1,原创 2017-11-30 12:59:43 · 435 阅读 · 0 评论 -
最小生成树--highway(poj 2485);
公路时限:1000MS 内存限制:65536K提交材料共计: 33392 接受: 15129描述这个岛国的Flatopia是完全平坦的。不幸的是,Flatopia没有公共公路。因此,在Flatopia的交通很困难。在政府意识到了这个问题。他们正计划修建一些公路,以便在没有离开公路系统的情况下在任何一对城镇之间开车。Flatopian镇从1到n。每条公路连接两个城原创 2017-11-23 19:50:17 · 394 阅读 · 0 评论 -
拓扑排序---(poj 2367)
拓扑排序 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称原创 2017-11-23 22:09:00 · 912 阅读 · 0 评论 -
最小生成树--Agri-Net(poj 1258);
农业网时限:1000MS 内存限制:10000K提交材料共计: 62643 接受: 25922描述农夫约翰被选为他的镇长!他的竞选承诺之一是将互联网连接到该地区的所有农场。他当然需要你的帮助。农场主约翰为他的农场订购了一条高速连接,并将与其他农民分享他的连接。为了降低成本,他想要铺设最少的光纤来连接他的农场和所有其他农场。给出连接每一对农场需要多少纤维的清单,你必须原创 2017-11-24 09:31:58 · 739 阅读 · 0 评论 -
贪心算法--邮局选址,输油管道问题
描述在一个按照东西和南北方向划分成规整街区的城市里,n个居民点散乱地分布在不同的街区中。用x 坐标表示东西向,用y坐标表示南北向。各居民点的位置可以由坐标(x,y)表示。街区中任意2 点(x1,y1)和(x2,y2)之间的距离可以用数值|x1-x2|+|y1-y2|度量。居民们希望在城市中选择建立邮局的最佳位置,使n个居民点到邮局的距离总和最小。编程任务:给定n 个居民点的原创 2017-11-27 15:42:50 · 3092 阅读 · 1 评论 -
贪心算法--畜栏保留问题(poj3190 )
ps:在poj上c++编译能过,g++不能过;#include#include using namespace std;#define NUM 50005struct cow{ int f; int e;//挤奶区间起终点 int NO;//编号 bool operator<(const struct cow &t) const{原创 2017-11-27 15:09:48 · 5664 阅读 · 1 评论 -
贪心算法--电影节(openjudge 4151 )
总时间限制: 1000ms 内存限制: 65536kB描述大学生电影节在北大举办! 这天,在北大各地放了多部电影,给定每部电影的放映时间区间,区间重叠的电影不可能同时看(端点可以重合),问李雷最多可以看多少部电影。输入多组数据。每组数据开头是n(n接下来n行,每行两个整数(0到1000之间),表示一场电影的放映区间n=0则数据结束输出对每组数据输出最多能看几部电影样原创 2017-11-26 20:56:53 · 2862 阅读 · 1 评论 -
贪心算法--圣诞老人的礼物(openjudge 4110 )
描述圣诞节来临了,在城市A中圣诞老人准备分发糖果,现在有多箱不同的糖果,每箱糖果有自己的价值和重量,每箱糖果都可以拆分成任意散装组合带走。圣诞老人的驯鹿最多只能承受一定重量的糖果,请问圣诞老人最多能带走多大价值的糖果。输入第一行由两个部分组成,分别为糖果箱数正整数n(1 输出输出圣诞老人能带走的糖果的最大总价值,保留1位小数。输出为一行,以换行符结束。样例输入原创 2017-11-26 20:09:15 · 1852 阅读 · 0 评论 -
广度优先搜索--迷宫问题(poj 3984)
Language:Default迷宫问题Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 25950 Accepted: 15104Description定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0原创 2017-11-26 13:58:39 · 550 阅读 · 0 评论 -
广度优先搜索--抓住那头牛(poj 3278)
描述农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(01、从X移动到X-1或X+1,每次移动花费一分钟2、从X移动到2*X,每次移动花费一分钟假设牛没有意识到农夫的行动,站在原地不动。农夫最少要花多少时间才能抓住牛?输入两个整数,N和K输出一个整数,农夫抓到牛所要花费的最小分钟数样例输入5 17原创 2017-11-26 10:52:20 · 1245 阅读 · 0 评论 -
回溯--深度优先搜索(图的M着色问题 poj1129)
【回溯】图的m着色问题题目描述 给定无向连通图G=(V, E)和m种不同的颜色,用这些颜色为图G的各顶点着色,每个顶点着一种颜色。是否有一种着色法使G中相邻的两个顶点有不同的颜色? 这个问题是图的m可着色判定问题。若一个图最少需要m种颜色才能使图中每条边连接的两个顶点着不同颜色,则称这个数m为该图的色数。求一个图的色数m的问题称为图的m可着色优化原创 2017-11-25 19:26:46 · 3239 阅读 · 1 评论 -
拓扑排序---(poj 1094)
Sorting It All OutTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 36338 Accepted: 12786DescriptionAn ascending sorted sequence of distinct values is one原创 2017-11-24 18:38:39 · 331 阅读 · 0 评论 -
最小生成树--Truck History(poj 1789);
卡车历史时限:2000MS 内存限制:65536K提交材料共计: 30032 接受: 11735描述先进货运有限公司使用不同类型的卡车。有些卡车用于蔬菜运送,其他用于家具或砖。该公司有自己的代码描述每种类型的卡车。该代码只是一个由七个小写字母组成的字符串(每个位置上的每个字母都有一个非常特殊的含义,但对于这个任务并不重要)。在公司发展的初期,只使用了一种卡车类型,后来又衍生原创 2017-11-24 12:03:36 · 456 阅读 · 0 评论 -
动态规划--再论(数字三角形 poj1163)
在动态规划这里感觉还是有一些吃力,所以又要回到最初的研究方法,才感觉到这些才是平时的一些小问题:下面将用最传统的方法进行讨论动态规划,其中的方法,见我的上一篇博客,这是用上一篇的博客的方法讨论;对于数字三角形:描述73 88 1 02 7 4 44 5 2 6 5(图1)图1给出了一个数字三角形。从三角形的顶部到底原创 2017-11-30 10:17:40 · 479 阅读 · 0 评论 -
动态规划--讲解
本文装载于:http://www.cnblogs.com/sdjl/articles/1274312.html文章写得很好,值得细细品读;看完以后能有所启发;通过金矿模型介绍动态规划 对于动态规划,每个刚接触的人都需要一段时间来理解,特别是第一次接触的时候总是想不通为什么这种方法可行,这篇文章就是为了帮助大家理解动态规划,并通过讲解基本的01背包问题来转载 2017-11-29 20:04:16 · 350 阅读 · 0 评论 -
二分法--案列(烘干衣服 poj3104)
DryingTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 18921 Accepted: 4742DescriptionIt is very hard to wash and especially to dry clothes in winter. Bu原创 2017-11-29 12:19:45 · 922 阅读 · 1 评论 -
枚举—案例(熄灯问题poj1222)
描述:有一个由按钮组成的矩阵,其中每行有6个按钮,共5行。每个按钮的位置上有一盏灯。当按下一个按钮后,该按钮以及周围位置(上边、下边、左边、右边)的灯都会改变一次。即,如果灯原来是点亮的,就会被熄灭;如果灯原来是熄灭的,则会被点亮。在矩阵角上的按钮改变3盏灯的状态;在矩阵边上的按钮改变4盏灯的状态;其他的按钮改变5盏灯的状态。在上图中,左边矩阵中用X标记的按钮表示被按下,右边的矩阵原创 2017-11-03 07:48:00 · 698 阅读 · 0 评论 -
枚举—案例(称硬币poj1013)
描述赛利有12枚银币。其中有11枚真币和1枚假币。假币看起来和真币没有区别,但是重量不同。但赛利不知道假币比真币轻还是重。于是他向朋友借 了一架天平。朋友希望赛利称三次就能找出假币并且确定假币是轻是重。例如:如果赛利用天平称两枚硬币,发现天平平衡,说明两枚都是真的。如果赛利用一枚真 币与另一枚银币比较,发现它比真币轻或重,说明它是假币。经过精心安排每次的称量,赛利保证在称三次后确定假币。输原创 2017-11-02 20:14:22 · 713 阅读 · 0 评论 -
枚举—案例(生理周期poj1006)
【问题描述】 人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高度集中。因为三个周期的周长不同,所以通常三个周期的高峰不会落在同一天。对于每个人,我们想知道何时三个高峰落在同一天。对于每个周期,我们会给出从当前年份的第一天开始,到出现高原创 2017-11-02 18:13:33 · 593 阅读 · 0 评论 -
枚举—案例(完美立方等式poj1543)
完美立方等式 形如a3= b3+ c3+ d3的等式被称为完美立方等式。例如123= 63+ 83+ 103。编写一个程序,对任给的正整数N(N≤100),寻找所有的四元组(a, b, c, d),使得a3=b3+ c3+ d3,其中a,b,c,d大于 1,小于等于N,且b。输入原创 2017-11-02 18:06:03 · 1377 阅读 · 0 评论 -
枚举--案例(百钱买百鸡问题)
中国古代的枚举问题百钱买百鸡问题• 鸡翁一值钱五, 鸡母一值钱三, 鸡雏三值钱一.百钱买百鸡, 问鸡翁, 鸡母, 鸡雏各几何—— 张丘建《算经》求解方法:• 先构造可能的解的集合S={(X,Y,Z)|0X, Y, Z分别代表买公鸡,母鸡和小鸡的只数• 然后验证条件X+Y+Z=100, 5X+3Y+Z/3=100原创 2017-11-02 17:42:48 · 1520 阅读 · 0 评论 -
枚举-算法
枚举求解策略: 它是基于已有知识进行的一种答案猜测的一类问题思想例如:求小于N的最大素数有以下一个问题:1.找不到一个数学公式,直接就去求出最大小于N的最大素数。2.我们可以这样思考:N-1是素数吗? N-2是素数吗? ......一直到找到这个数为止,(这个过程我们在不断的猜想,不断 地将每一种情况考虑,这就是枚举的策略)假设原创 2017-11-02 16:05:12 · 571 阅读 · 0 评论 -
递归---案例(棋盘分割poj1191)
题目描述将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的部分继续如此分割,这样割了n-1次后,连同最后剩下的矩形棋盘共有n块矩形棋盘。(每次切割都只能沿着棋盘格子的边进行) 原棋盘上每一格有一个分值,一块矩形棋盘的总分为其所含各格分值之和。现在需要把棋盘按上述规则分割成n块矩形棋盘,并使各矩形棋盘总分的均方差最小。 均方差σ原创 2017-11-04 21:36:20 · 626 阅读 · 0 评论 -
分治算法--士兵排队(poj1723)
【问题描述】 在一个划分成网格的操场上,n个士兵散乱地站在网格点上。网格点由整数最表(x,y)表示。士兵可以沿着网格边上、下、左、右移动一步,但在同一时刻一个网格上只能有一名士兵。按照军官的命令,士兵们要整齐地列成一个水平队列,即排列成(x,y),(x+1,y),…,(x+n-1,y)。如何选择x,y的值,才能使士兵们以最少的总移动步数排成一列。 请计算使所有士兵排原创 2017-11-05 09:42:19 · 6208 阅读 · 2 评论 -
动态规划--(数字三角形 poj1163)
描述73 88 1 02 7 4 44 5 2 6 5(图1)图1给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和。注意:路径上的每一步只能从一个数走到下一层上和它最近的左边的那个数或者右边的那个数。输入输入的是一行是一个整数N (原创 2017-11-06 19:29:44 · 457 阅读 · 0 评论 -
枚举—案例(画家问题poj1681)
描述 有一个正方形的墙,由N*N个正方形的砖组成,其中一些砖是白色的,另外一些砖是黄色的。Bob是个画家,想把全部的砖都涂成黄色。但他的画笔不好使。当他用画笔涂画第(i, j)个位置的砖时, 位置(i-1, j)、 (i+1, j)、 (i, j-1)、 (i, j+1)上的砖都会改变颜色。请你帮助Bob计算出最少需要涂画多少块砖,才能使所有砖的颜色都变成黄色。 输入 第一行是原创 2017-11-03 09:15:08 · 1276 阅读 · 0 评论 -
枚举—案例(讨厌的青蛙poj1054)
问题描述 在韩国,有一种小的青蛙。每到晚上,这种青蛙会跳越稻田,从而踩踏稻子。农民在早上看到被踩踏的稻子,希望找到造成最大损害的那只青蛙经过的路径。每只青蛙总是沿着一条直线跳越稻田,而且每次跳跃的距离都相同,如图 所示。 稻田里的稻子组成一个栅格,每棵稻子位于一个格点上,如图 所示。而青蛙总是从稻田的一侧跳进稻田,然后沿着某条直线穿越稻田,从另一侧跳出去,原创 2017-11-03 09:48:31 · 1210 阅读 · 0 评论 -
递归---算法
递归的基本思想什么是递归• 递归 — 某个函数直接或间接的调用自身• 问题的求解过程划分成许多相同性质的子问题的求解而小问题的求解过程可以很容易的求出• 这些子问题的解就构成里原问题的解总体思想• 待求解问题的解输入变量x的函数f(x)• 通过寻找函数g( ),使得f(x) = g(f(x-1))原创 2017-11-03 18:30:49 · 433 阅读 · 0 评论 -
关键路径--经典算法
探寻AOE网用顶点表示事件,弧表示活动,弧上的权值表示活动持续的时间的有向图叫AOE(Activity On Edge Network)网。在建筑学中也称为关键路线。AOE网常用于估算工程完成时间。例如:图1图1 是一个网。其中有9个事件v1,v2,…,v9;11项活动a1,a2,…,a11。每个事件表示在它之前的活动已经完成,在它之后的活动可以开始。如原创 2017-11-28 21:36:10 · 16489 阅读 · 0 评论 -
回溯--深度优先搜索(01背包)
背包问题是动态规划中的经典问题,而01背包问题是最基本的背包问题,也是最需要深刻理解的,否则何谈复杂的背包问题。POJ3624是一道纯粹的01背包问题,在此,加入新的要求:输出放入物品的方案。我们的数组基于这样一种假设:totalN表示物品的种类,totalW表示背包的容量w[i]表示第i件物品的重量,d[i]表示第i件物品的价值。#includ原创 2017-11-18 10:27:14 · 1100 阅读 · 0 评论 -
回溯--深度优先搜索(数字n的组合数)
例:编写一个输出1,2,3…,n,n个数字所组成的所有排列.例如:n=3 ,则全排列为:111 112 113 121 122 123 131 132 133211 212 213 221 222 223 231 232 233311 312 313 321 222 223 331 332 3原创 2017-11-18 10:22:09 · 762 阅读 · 0 评论 -
深度优先搜索--算法(寻路问题 poj724)
DescriptionN cities named with numbers 1 … N are connected with one-way roads. Each road has two parameters associated with it : the road length and the toll that needs to be paid for the road (ex原创 2017-11-18 10:17:41 · 974 阅读 · 0 评论
分享