自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 资源 (9)
  • 收藏
  • 关注

原创 拓扑排序

拓扑排序为对有向无环图的一种排序 ,它表示了事件发生的先后顺序 ,当在有向图中形成环后便不可拓扑排序 偏序 : 任意两个顶点要么是有序的即按先后顺序出现 要么是无序的 没有先后顺序 但是不可能出现矛盾 即出现环 全序 : 任意两个顶点都是有序的即按先后顺序出现的 是偏序的一种特殊情况 这里描述下拓扑排序的思路 :首先找到入度为0的点把它压入队列中 然后只要队列不为空 就取出其中的入度为

2015-07-29 10:52:58 562

原创 有向图中欧拉回路的求法

首先是欧拉回路的判断 在无向图中的欧拉回路 每个顶点的度都是偶数 且图为连通图 在判断连通性的时候可以使用并查集来判断图的连通性 也可以使用dfs或bfs来判断 不过运行速度会慢一点 在有向图中 欧拉回路 每个顶点的入度等于出度 且是连通的 这里的连通指的是弱连通 有向图的强连通性:任意两个顶点 a和b 既有a到b的路径又有b到a的路径 有向图的单向连通性: 任意两个

2015-07-28 14:12:21 2681

原创 无向连通图中求割点集

割点就是去除这个点 以及和这个点相连接的边则会使连通分量不连通 。 最简单的算法是依次尝试所有点看去除该点和所对应的边 看一次dfs是否能遍历整个图 。不过时间复杂度较高。 下面的算法是基于 tarjan算法的 在算法中使用dfn来表示访问的时间(次序) low[a]来表示 a能够追溯到的祖先节点 (1) 当a节点是dfs树中的根节点时 如果a有两个或者两个以上的子树则说明a是割点 (

2015-07-26 17:59:41 1361

原创 tarjan算法

如果两个顶点间存在路径使得a可到达b b也可到达a,称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通有向图的极大强连通子图,称为强连通分量(strongly connected components) tarjan算法是基于dfs深度优先搜索的 算法中使用dfn和low数组 dfn数组来记录每个节点的访问时间 也就是访问

2015-07-25 20:09:41 455

原创 无向图中欧拉回路的求法 poj1041

Poj 1041 John’s trip 就是无向图中欧拉回路的求法 首先判断是否存在欧拉回路 判断图的连通性利用并查集实现 然互判断每个点的度数是否为偶数 如果判断存在欧拉回路则利用dfs打印出欧拉回路#include <iostream>#include <algorithm>#include <vector>#include <stdlib.h>#include <stdio

2015-07-24 16:02:38 2112 1

原创 hdu 1878 欧拉回路

欧拉路径是指在图中每个边只遍历一遍 能够走完所有边 欧拉回路是欧拉路径且最后起点和终点重合 判断一个无向图中是否存在欧拉回路的充要条件是 每个顶点的度都是偶数且为连同图 一个有向图是否为欧拉图的充要条件为 每个顶点的出度等于入度 且为连通图 下面的题目在判断时很简单 只用了一次bfs就判断了图的连通性 题目链接 http://acm.hdu.edu.cn/showproblem.php?

2015-07-22 20:50:39 457

原创 uva 196 spreadsheet

//uva 196 spreadsheet//题目不是很难 但是对于输入数据的处理比较困难//题目大意为 网格中每个要么为整数 要么为公式//最后要把公式都替成数字#include <iostream>#include <string.h>#include <cstdio>using namespace std;typedef struct{ bool type;//标记是

2015-07-22 11:48:28 436

原创 Kruskal算法的并查集实现

最小生成树的kruskal算法的伪代码如下 w[i]为边的权值,u[i],v[i]分别为边的端点的下标 mst为最小生成树的所有边的结合 n为顶点的个数 m为边的个数将边按权值排序w[0]<=w[1]<=……..<=w[m-1]; 初始化每个顶点属于不同的连通分量; for(i=0;i#include <iostream>using namespace std;const int NMA

2015-07-19 21:33:11 1585

原创 codeforces 463c

//codeforces 463c //题目大意://在n*n的网格里每一个网格都有一个数字 在这个网格上放置2个主教//主教会攻击在和他同一个对角线上的数字 而每攻击一个数字就会获得//这个数字大小的钱 怎么放置两个主教 才可使两个主教不攻击同一个元素//并且获得最多的钱//解题思路://要想两个主教不攻击同一个元素 则两个主教必须在不同的奇偶格里(行号+列号)//计算每个格子上

2015-07-15 18:51:11 558

原创 uva_10201 adventure_in_moving dp

//uva_10201 adventure_in_moving //输入://1////500//100 999//150 888//200 777//300 999//400 1009//450 1019//500 1399//////1 为输入数据的次数 和500之间有空格 500为路径的长度//接下来7行 每行有2个数字 第一个数字表示加油站的位置 第二个数表示

2015-07-14 15:27:02 463

原创 最长上升子序列n*n和nlogn 算法

最长上升子序列是常见的DP问题.数组b[1]~b[n]中存放着n个数字, 从1~n都有,顺序不定。 第一种方法是n*n时间复杂度的算法,利用一个数组d[i](i从1到n)存放着以b[i]作为结尾的最长子序列的长度,则状态转换方程为: d[i]=max{d[j]+1},(jint n,b[n+1],d[n+1];//b[n+1]中存放原来的数组,d[n+1]中存放最长上升子序列的长度int p

2015-07-13 11:50:24 788

原创 uva 111 History Grading

////uva 111 History Grading//将问题转换为求最长上升子序列的长度//这里求最长上升子序列采用的是nlogn的时间复杂度的算法#include <iostream>#include <sstream>using namespace std;const int NMAX=20;int len;int b[NMAX+1],d[NMAX+1],convert[NM

2015-07-13 09:53:54 408

原创 uva 104 arbitrage(套利)

//uva 104 arbitrage(套利)//版权所有(c) 2015 heweiliang//题目描述://输入://3//1.2 .89//.88 5.1//1.1 0.15//输出://1 2 1//输入描述:3为货币种数 接下来三行为 每种货币对于其他货币的兑换比例//题目描述:题目要求出兑换的次数最少(且次数少于或等于n次)的并且满足// 兑换后

2015-07-11 21:08:08 740

原创 Floyd最短路径算法

Floyd-Warshall算法,简称Floyd算法,用于求解任意两点间的最短距离,时间复杂度为O(n^3)。我们平时所见的Floyd算法的一般形式如下: void Floyd(){ int i,j,k; for(k=1;k<=n;k++) for(i=1;i<=n;i++) for(j=1;j<=n;j++)

2015-07-10 15:41:14 790

原创 贪心算法的设计思想

贪心算法在解决问题的策略上目光短浅,只根据当前已有的信息就做出选择,而且一旦做出了选择,不管将来有什么结果,这个选择都不会改变。换言之,贪心法并不是从整体最优考虑,它所做出的选择只是在某种意义上的局部最优。贪心算法对于大部分的优化问题都能产生最优解,但不能总获得整体最优解,通常可以获得近似最优解。 引例 [找零钱] 一个小孩买了价值少于1美元的糖,并将1美元的钱交给售货员。售货员希望用数目最少的

2015-07-04 20:35:48 2435

原创 UVa Problem 704 Colour Hash (色彩缤纷游戏)

//版权所有(C)2015 何伟亮//本题若直接采用正向搜索会搜索16层的深度 由于深度太深搜索的元素太多会导致速度大为降低,所以我采用正向搜索和反向搜索相结合的方式//先反向搜索9层的深度并将所有可能出现的情况放入cache中 然后正向搜索8层的深度如果在搜索的过程中发现结果已经在cache中则说明是可以//在16步之内找到通往目标序列的方法,否则则无法找到.#include <iostre

2015-07-03 17:17:30 438

原创 c++中map

Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作! 1. map最基本的构造函数; map<string , int >mapstring; map<int ,string >mapint; map<sring, char>mapstring; map< char

2015-07-01 20:21:26 513

PID算法介绍

pid算法是用于反馈控制的算法 适合于工业控制

2012-10-07

数字电路教程

很好的数字电路入门资源,非常适合入门 数字电路是基础哦

2012-09-23

TMP100驱动

温度传感器TMP100的驱动代码,可以直接拿过来用的

2012-09-18

安卓开发门必读

安卓开发必读 Android

2012-05-13

空空如也

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

TA关注的人

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