自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

taotao 的大学墓志

keep thinking! keep learning!

  • 博客(14)
  • 资源 (1)
  • 收藏
  • 关注

原创 图的储存(边集数组)

边集数组介绍一种《算法入门经典》上的图的储存方式,边集数组+数组链表 先上代码struct Edge{ int from,to,w;};int first[MAX_V];int next[MAX_E];void init(){ memset(first,-1,sizeof(first)); memset(next,-1,sizeof(next));}void re

2016-08-29 19:18:45 1427

原创 poj 2570 Fiber Network --floyd求传递闭包加位运算

题目链接: http://poj.org/problem?id=2570 题目意思很简单,给你一个网路图,对于图上的站点,如果是可以连通的会标出可以修通从ii站点到jj站点的公司,公司用小写字母表示。会给出很多个询问,对于每个询问(A,B),求出能修通从A到B的公司。 分析 用g[i][j][m]g[i][j][m]表示对于公司mm能修通从从ii站点到jj站点的网络,这样相当于建了26个图,

2016-08-29 19:02:23 511

原创 所有节点对之间的最短路问题(All Pair Shortest Path)--《算法导论》

给定一个有向图求出里面所有节点对之间的最短路径。 问题的详细描述见Wikipedia:https://en.wikipedia.org/wiki/Shortest_path_problem。 介绍两个算法O(V3)O(V^3)的Floyd算法和O(V2lgV+VE)O(V^2lgV+VE)的Jhonson算法。分别应对稠密图和稀疏图的情况。Floyd这是一个动态规划算法。设dkijd_{ij}^

2016-08-28 23:52:05 4508

原创 单源最短路径(Single Source Shortest Path)--《算法导论》

关于最短路径的描述请参考维基百科Shortest Path简单总结一下算法导论上描述的计算从单一节点源到图中每一节点的最短路径算法,Bellman-Ford算法及其优化版本spfa,以及对权重非负的图的Dijkstra算法。基本操作初始化节点源 设节点vv到节点源ss的距离为v.dv.d求最短路径之前进行如下初始化操作 INITIALIZE_SINGLE_SOURCE(G,ss) for

2016-08-28 21:12:44 4670

原创 UVa 1395 - Slim Span --生成树入门题

题目链接 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4141 问题的意思是叫你找到一颗生成树,生成树的值定义为权重最大的一条边WmaxW_{max}减去权重最小的一条边WminW_{min},使生成树的值最小,输入和输出看原题,顶点个数n<=100

2016-08-26 11:04:50 602

原创 最小生成树(Minimal Spanning Tree MST)--《算法导论》

MST: 简单的说就是给定一个连通的无向图,并给每一条边赋予权重w(u,v)w(u,v),在其中找出一个边集AA,使得AA链接所有的顶点,并使得这些VV和这个边集AA一起构成一棵树T=(V,A)T=(V,A),并且边集权重最小。书中描述了两种采用贪心策略的算法,简单地说就是设法找到一个切割(S,V−S)(S,V-S)中的轻量及边,加入到边集AA中

2016-08-25 19:16:28 2148

原创 基本图论算法--《算法导论》

广度优先搜索(BFS)算法描述对于一个给定的图G(V,E)G (V,E) 和一个源节点SS BFS能遍历所有从SS出发能到达的节点,并计算SS 能到达每一个节点的距离(最少的边数),并生成一可广度优先搜索树。代码说明u.pu.p uu的前驱结点 u.du.d uu到SS的距离 u.coloru.color uu的状态,WHITE 未被搜索到,GRAY正在被发现,BLACK以搜索结束 QQ 队列

2016-08-23 16:58:29 7070

原创 UVa 1625 color length--dp状态转移的巧妙计算

题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4500 分析 这道题的规划方向是很容易找到的。如果用d[i][j]d[i][j]表示第一串规划到第ii个字符,第二串规划到第jj个字符的最优“代价”,而由于d[i][j]d[i][j]由状态

2016-08-20 14:48:09 890

原创 超递增序列背包问题

问题描述背包密码曾被用做公钥密码,因为对于平凡的序列<a1,...,ai,...,an><a_1,...,a_i,...,a_n>目前的最优时间复杂度为O(2n/2)O(2^{n/2}) 但我们可以在O(n)O(n)的时间复杂度内解决序列为超递增的情况。应用于背包密码的背包问题给定一个序列<a1,...,ai,...,an><a_1,...,a_i,...,a_n>与值SS从中选出一些数使他们的和为

2016-08-19 08:27:18 6618

原创 01背包问题

问题描述 给定nn 种物品,每种物品只有一个,每种物品的体积为viv_i,价值为wiw_i,给定一个体积为cc的背包,问如何装才能使价值最大。 分析 显然不能用完全背包的DAG动态规划求解,因为不知道,“下”一个物品是否选过了。 可以这样思考,如果已经求解出了前i−1i-1个物品对于体积为j,{0≤j≤c}j,\{0\le j\le c\}的最优解。那么要决策第ii个物品的最优解就容易了。因

2016-08-18 11:51:14 576

原创 双调欧几里得旅行商问题-《算法导论》

题目描述 给定平面上n个点作为输入,要求从最左端的点开始,严格向右前进,直到最右端的点,再严格向左前进到第一个点,每一个点只能经过一次。 主算法: d(i,j)d(i,j)表示两个人第一个点出发沿着不同的路径分别走到i,ji,j并且经过1∼max(i,j)1\sim max(i,j)的所有点到达终点还需要的距离。dist(i,j)dist(i,j)表示i,ji,j的欧几里得距离。 因此,d(

2016-08-17 16:29:42 1870

原创 uva1025-《算法入门经典》

从dp[T][n]一直往前转化#include<cstdio>#include<cstring>#include<algorithm>#define maxn 59#define maxt 209#define INF 0x3f3f3f3fint N,T,M1,M2;int dp[maxt][maxn];//t时刻在n车站的最优等待时间int has_train[maxt][maxn]

2016-08-17 12:19:17 522

原创 硬币问题——《算法入门经典》

分析: 典型的固定起始点的DAG最长路最短路问题。起点为S,终点为0,只是注意一些细节。 1、输出答案。 2、是否能走到0#include<cstdio>#include<cstring>#include<algorithm>#define maxn 100009 #define INF 0x3f3f3f3fusing namespace std;int v[maxn],mi

2016-08-15 15:08:17 1492

原创 嵌套矩形——DAG上的dynamic programing

问题描述: 有n个矩形,每个矩形可以用两个整数a,b描述,表示它们的长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中的条件为:当且仅当a<c,b<da<c,b<d 或者b<c,a<db<c,a<d(相当于把矩形X旋转90度)。选出尽量多的矩形排成一行,使得除了最后一个之外,每一个矩形都可以嵌套在下一个矩形内。分析:对于本题中的n个矩形,以每个矩形作为一个点,若X矩形能嵌套在Y矩形中,则从X向Y

2016-08-15 11:05:05 531

空空如也

空空如也

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

TA关注的人

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