自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(85)
  • 资源 (7)
  • 收藏
  • 关注

原创 prim + 优先队列

对于最小生成树,有两种算法可以解决。一种是Prim算法,该算法的时间复杂度为O(n²),与图中边数无关,该算法适合于稠密图,而另外一种是Kruskal,该算法的时间主要取决于边数,它较适合于稀疏图。#define nMAX 2003#define INF 0x3ffffffint map[nMAX][nMAX];/** 节点数 */int n;/** 是否已加入集合, v

2013-03-05 21:53:09 662

原创 poj 3613 最短路变形( 恰好经过 k 条边的最短路 )

题目链接题意:牛牛接力赛,共有 N (2 ≤ N ≤ 1,000,000) 头牛,T (2 ≤ T ≤ 100) 条连接两个路口的无向边,每个路口可以有多头牛,给定起点 s 和终点 e ,问每头牛都只跑一条无向边的最短路长度是多少?思路:先计算分别从起点和终点到各点经过k ( 0 简单证明:虽然枚举重复边的时候剩余的边数一定要是奇数,可能有时候并不能在最短的边上来回走然后退出,

2013-03-04 15:57:29 560

原创 poj 1170 二解 之 六进制状态压缩DP

题目链接题意“:有 b种商品 (0 用压缩状态表示商品的数量#include#include#includeusing namespace std;/** 一共有五种商品 */#define nMAX 6/** 六进制基数数组,用六进制是因为每种商品的个数在0 ~ 5 */const int base[5] = { 1, 6, 36, 216, 1296 }

2013-03-01 21:51:33 287

原创 poj 1170 二解 之 背包

题目链接题意“:有 b种商品 (0  c(1 , k(1 ,  p (1 (0 (1 c(编码),k(需购买数量)两个属性,最后是买这个方案中的所有商品给定的数量需要的总价格。问怎样选择优惠方案能最省钱?#include#include#includeusing namespace std;#define nMAX 6 /** 五维数组dp表示五种(或小于五种)商品各

2013-03-01 21:14:03 280

原创 poj 2411 & 编程之美 4.2 瓷砖覆盖地板

题目链接题意:用 1 * 2 的瓷砖覆盖 n * m 的地板,问共有多少种覆盖方式? 思路:用2进制的01表示不放还是放,第i行只和i-1行有关,枚举i-1行的每个状态,推出由此状态能达到的i行状态:如果i-1行的出发状态某处未放,必然要在i行放一个竖的方块,所以我对上一行状态按位取反之后的状态就是放置了竖方块的状态。然后用dfs搜索在i行放横着的方块的所有可能,并且把这些状态累加上i-

2013-02-27 22:00:32 3095 2

原创 poj 1185 炮兵阵地

题目链接题意:在N*M的网格地图上部署炮兵部队。地图的每一格可能是山地(用"H" 表示),也可能是平原(用"P"表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区域所示: 如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色的网格表示它能够攻击到的区域。炮兵的攻击范围不受地形的影响。

2013-02-27 14:39:44 951 2

原创 状态压缩DP 第一题

题目链接题意:一块 m * n 的土地  (1 ≤ m ≤ 12; 1 ≤ n ≤ 12),给出其每个方块的贫瘠情况,现要在其上栽种玉米,要求任何两块栽种玉米的地方不能有相邻的边,问玉米的栽种方法一共有几种(一块地都不栽种也属于方法的一种)?#include#include#includeusing namespace std;#define INF 2048#defin

2013-02-24 15:45:06 264

原创 POJ 1260 Pearls 解析

题目链接题意:有 c (1错误思路:贪心。从等级最低的开始,判断将其全部用高1等的珍珠来替代是否划算,是则替换并接着试着向上合并,不是则购买这一等级的珍珠。//num[i] 表示需购买的第i等级的珍珠的数量//price[i] 表示每颗第i等级的珍珠的价格// c 表示总的等级数 for( i = 1; i < c; i ++ ){ if( ( num[i] + 10 )

2013-02-22 15:03:05 420

原创 POJ 1159 Palindrome 之解法三 LCS (最长公共子序列)

题目链接题意:给定一个长度为N(3 )的字符串,只用插入字符这种操作,问要使其变成回文字符串,最少需多少步的插入?思路:找出所给字符串中最大的回文子序列长度L,N - L即为答案。L = 所给字符串和其逆序串的LCS。LCS 背景:LCS(Longest Common Subsequences)最长公共子序列用一般的动态规划时间复杂度O(N^2), 但经过优化可以达到O(NlogN

2013-02-18 14:20:02 314

原创 POJ 1159 Palindrome 之解法二 DP

题目链接题意:给定一个长度为N(3 )的字符串,只用插入字符这种操作,问要使其变成回文字符串,最少需多少步的插入?#include#include#includeusing namespace std;#define MAX 5000#define min( x, y ) ( x < y ? x : y )int dp[2][MAX + 5]; //滚动数组c

2013-02-18 14:04:35 217

原创 POJ 1159 Palindrome 之解法一 记忆化搜索

题目链接题意:给定一个长度为N(3 )的字符串,只用插入字符这种操作,问要使其变成回文字符串,最少需多少步的插入?#include#include#includeusing namespace std;#define MAX 5000#define min( x, y ) ( x < y ? x : y )short int dp[MAX + 5][MAX + 5];

2013-02-18 13:37:06 228

原创 POJ 1836 Alignment

题目链接题意:一个n (2 个人组成的队伍,给出每个人的身高 在[0.5, 2.5] 之间,现要使每个人都能看到左右至少一端的尽头,问至少需要去掉多少人?思路:枚举剩下的队列中的最高的人的位置,在这一最高的人的左边必定是按身高递增排列的人,在它的右边则必定是按身高递减排列的人,故只需求一次LIS,一次LDS即可。#include#include #include using name

2013-02-16 13:06:39 243

原创 POJ 1837 Balance

题目链接题意:一个杠杆,有多个钩子,每个钩子可以挂多个砝码,现在给出钩子距离中心点的位置坐标以及各个砝码的重量,问在将所有砝码都用上的前提下,使这一杠杆平衡的方法有多少种?思路:多重背包,dp[i][j]数组中存储的是到第 i 个砝码位置平衡度为 j 的方法有几种#include#include #include using namespace std;////砝码个数G

2013-02-14 15:41:47 212

原创 poj 1094 之解法二 拓扑排序

题目链接题意:给出大于等于 A 小于 A +  n 的字母间的大小关系式,问是否能确定 n个字母的大小关系?如能,在第几个关系式时能确定?如不能,是否出现了矛盾,在第几个关系式时出现了矛盾?关系式举例如下:A<BA<CB<CC<DB<DA#include#include #include #includeusing namespace std;int

2013-02-10 16:07:45 227

原创 poj 1094 之解法一 传递闭包

题目链接题意:给出大于等于 A 小于 A +  n 的字母间的大小关系式,问是否能确定 n个字母的大小关系?如能,在第几个关系式时能确定?如不能,是否出现了矛盾,在第几个关系式时出现了矛盾?关系式举例如下:A<BA<CB<CC<DB<DA#include#include #include #includeusing namespace std;int n;

2013-02-09 13:32:47 246

原创 POJ 1426 之解四 DFS

题目链接题意:给定一个数 n (1 解题思路: p * 10 和 p * 10 + 1 两条分支,包含剪枝优化#include#include #include int s=0; int mod[201];using namespace std;void DFS(__int64 p,int n,int k){ ////DFS终止条件 i

2013-02-07 21:20:24 236

原创 poj 1426 之解三 动态规划

题目链接题意:给定一个数 n (1 解题思路:dp[ i ] [ j ] 表示 数列 1,10,100,1000,10000,......的前 i 个数任意组合得到的和是否有模 n 是  j的数,若有,将此数中最小的存在dp[i][j]中。#pragma warning (disable:4786) #include#includeusing nam

2013-02-07 20:51:13 219

原创 poj 1426 之解二 鸽巢原理

题目链接题意:给定一个数 n (1 解题思路:题目变换为 1,10,100,1000,10000,......等的组合,而用鸽巢原理可以证明,任何一个数 N,都存在这样一个数,该数是上述队列中连续数相加的和且能被 N整除。证明思路:对 a1 = 1 + 10, a2 = 1 + 10 + 100, a3 = 1 + 10 + 100 + 1000,......组成的

2013-02-07 20:44:05 314

原创 poj 1426 之解一 BFS

题目链接题意:给定一个数 n (1 解题思路:BFS (从 1 开始 对每个数的 * 10 和 * 10 +1入队)下面的代码可以这样优化:通过设置一个mod[201] 数组记录已入过队的数模 n 的值,其余模相同的数就可以不再入队。#include #include using namespace std;int n;long long bfs(){

2013-02-07 20:19:47 193

原创 广度搜索入门

题目链接题意:给定坐标上的两个点 N (0 ≤ N ≤ 100,000),K (0 ≤ K ≤ 100,000),问从 N 出发每次采取三种走法之一( N-1; N + 1;N * 2 ),每一步消耗1 min。问消耗的最少时间是多少?#pragma warning (disable:4786) #include#includeusing namespace std;

2013-02-05 14:19:24 200

原创 POJ 1088 之二解

题目链接题意:矩形滑雪区域中有各个点的高度,规定只能从高处滑向地处,问最长的滑行路线长度。 比如上面的区域最长路线为 25-24-23-...-3-2-1,长度为25,故应输出25。解法一: DFS + 记忆化搜索#include#includeusing namespace std;#define MAX 100int arr[MAX + 5]

2013-02-02 21:39:43 226

原创 开放定址法解决冲突的哈希表

http://poj.org/problem?id=3349题目描述:找是否有两片完全相同的雪花,雪花总数为 0 n ≤ 100000,判断两片雪花是否相同的标准为其中一片雪花的的六角数组经过向左(右)循环移位后与另一片的六角数组相同#pragma warning (disable:4786) #include #include#includeusing namespace

2013-01-22 20:10:19 834

原创 拉链法解决冲突的哈希表

http://poj.org/problem?id=3349题目描述:找是否有两片完全相同的雪花,雪花总数为 0 n ≤ 100000,判断两片雪花是否相同的标准为其中一片雪花的的六角数组经过向左(右)循环移位后与另一片的六角数组相同下述方法的一个改进是用空间换取时间,即将雪花的六角存储两份在一个 size 为 12 的数组中,判断另一片要雪花数组是否在其中,然后将两一片雪花数组逆序,

2013-01-21 19:43:35 1671

原创 二分图的最大匹配之变形

http://poj.org/problem?id=3020题意:如下图 h * w 的矩阵(1 ), 能横向和竖向地覆盖相邻两个圆点的椭圆,问给定圆点的个数和位置,能覆盖这些圆点的最小椭圆数?分析:将此矩阵中的圆点坐标转换成 1—— h * w  的一维坐标,若一个圆点的正上、正下、左、右方有圆点,则连一条双向边,构造一个图,找到此图的最大匹配

2013-01-01 15:34:34 322

原创 二分图的最大匹配之最小点集覆盖

http://poj.org/problem?id=3041题意:在N*N(1 的平面上有K颗小行星,现在你要摧毁他们,你的每一发子弹可以摧毁同一行,或者是同一列上的小行星,现在问你最少要多少子弹才能摧毁所有的小行星?分析:构造一个二分图,用每行的行号做集合1中的点,用每行的列号做集合2中的点,如果第 i 行第 j 列有一个小行星,就可以把集合1中的 i 行点与

2012-12-29 21:01:31 389

原创 二分图的最大匹配之基本概念

参考:http://dsqiu.iteye.com/blog/16895051.二分图二分图是这样的图:它的顶点可以分成两个不相交的集合,使得同一集合中的点没有边相连。易知:任何无回路的的图均是二分图。2.二分图的最大匹配给定一个二分图 G,在 G 的一个子图 M 中,M 的边集 {E} 中的任意两条边都不依附于同一个顶点,则称 M 是一个匹配。 选择这样的子集中边数最

2012-12-28 22:03:37 402

原创 基于枚举的贪心

http://poj.org/problem?id=1042有若干个岛屿,每个岛只和前一个岛有路径相连,路径的长度为 ti 个5 分钟的路程,且该路径是单向的,每个岛上都可以钓鱼,岛 i 初始的 5 分钟能钓到的鱼量为 di , 此后的鱼量以每 5 分钟 di 的速度减少,现在从第一个岛开始,问怎样选择停留的方式,才能使在 h 小时内钓到的鱼量最多?思路一:动态规划分组背包问题(详见背

2012-12-21 16:43:30 253

原创 基于枚举的贪心

http://poj.org/problem?id=1042有若干个岛屿,每个岛只和前一个岛有路径相连,路径的长度为 ti 个5 分钟的路程,且该路径是单向的,每个岛上都可以钓鱼,岛 i 初始的 5 分钟能钓到的鱼量为 di , 此后的鱼量以每 5 分钟 di 的速度减少,现在从第一个岛开始,问怎样选择停留的方式,才能使在 h 小时内钓到的鱼量最多?思路一:动态规划分组背包问题(详见背

2012-12-21 15:08:12 87

原创 哈弗曼树

http://poj.org/problem?id=3253一根木棍,要切出相应长度的几段木条,每次切需要的费用是当前木棍的长度,问怎样切才能使费用最少?比如:长度为13的木棍,要切出长度分别为 2, 3, 4, 4 的木条,最省钱的方法是先切成 5, 8 两段,然后 5 切成 2,3 两段,8 切成 4, 4 两段,这样总费用为 13 + 5 + 8 = 26思路:考虑切过程的逆过程

2012-12-19 19:45:53 295

原创 寻找第K大的数

int find_K_Largest( int begin, int end, int k ){ int s = begin + 1,t = end,first; first = arr[b]; while( s < t ){ while( arr[s] < first && s < t ) s ++; while( arr[t] >= first && s < t )

2012-12-18 21:24:01 246

原创 逆序数对(nlogn)

http://poj.org/problem?id=2299分析一个特定的排序算法。这一算法通过交换相邻的两个数来处理一个由不同整数组成的数列,直到数组升序排好序为止。 Your task is to determine how many swap operations it  needs to perform in order to sort a given input sequen

2012-12-08 21:38:56 328

原创 逆序数对 (常规)

http://acm.hdu.edu.cn/showproblem.php?pid=1394求下列数列中逆序数对最少的一个,并求出逆序数对数量?(n )a1, a2, ..., an-1, ana2, a3, ..., an, a1a3, a4, ..., an, a1, a2...an, a1, a2, ..., an-1 #pragma warning (d

2012-12-08 21:26:57 230

原创 Wooden Sticks

http://acm.hdu.edu.cn/showproblem.php?pid=1051一束待处理木棍,若后面的木棍的长 L 和宽 W 均不小于前一根木棍,则处理机器的不需要启动时间,否则需要1 min (第一根木棍需要1min),问最少需要处理时间?#pragma warning (disable:4786) #include#includeusing namespace s

2012-12-06 19:36:18 192

原创 N皇后问题 (回溯+打表)

http://acm.hdu.edu.cn/showproblem.php?pid=2553第一种方法,需打表,否则超时#pragma warning (disable:4786) #includeusing namespace std;int used_column[12]; //标记列是否被用过int used_Ldia[102],used_

2012-12-03 19:13:37 389

原创 回溯法

http://acm.hdu.edu.cn/showproblem.php?pid=1045在最多为 4 * 4 的方阵中,圆形代表堡垒,正方形代表墙,堡垒射出的子弹无法穿过墙,求任何两个堡垒都不能射中对方的最大的堡垒放置数?#pragma warning (disable:4786) #include#include#includeusing namespace std

2012-12-02 17:08:26 220

原创 田忌赛马

http://acm.hdu.edu.cn/showproblem.php?pid=1052田忌和王各有n匹马,马的速度已知,每一回合输的一方给赢的一方200银币,求田忌应怎样分配马的出场顺序才能使田忌能获得最大的收益?#pragma warning (disable:4786) #include#includeusing namespace std;#define MAX 10

2012-11-23 20:27:47 240

原创 导论-五个入门结论

Do not play a strictly dominated strategy.Rational choice can lead to outcomes that suck.(囚徒困境,打扫寝室卫生)Put yourself in others' shoes and try to figure out what they will do,

2012-11-22 19:49:04 120

原创 三种解法(dp,两种贪心)

http://acm.hdu.edu.cn/showproblem.php?pid=1789有 N 份 homework ,每份有 deadLine 和 score,如果超过deadLine 还没做完,该homework的 score 将被扣去,做完每份homework的时间是相等的,为一天。求扣分最少的策略的扣分数。解法一:动态规划与  毕业bg 这题有诸多类似之处,代码也与之雷同,

2012-11-19 20:23:53 278

转载 尋覓優秀的女人

女人佔了人類的一半。這個數字是多少?假定人類有60億,廣義的女人(從垂垂老媼到嗷嗷待哺的女嬰)就有30億。假如我們把女孩的年齡界定在15-30歲,大約佔女人總人數的五分之一吧,那也有6個億了。    望漫天霞霓,俯蒼茫人寰,常常想,這其中最優秀的女人該有多少?    優秀的女人首要該是善良。    之所以把善良排得惟此為大,是因為這個世界殘酷太多。權力場、金錢場、情場、戰場

2012-11-18 21:41:32 347

原创 NIM(3) 斐波那契数列在游戏中的妙用

有一堆个数为n的石子,游戏双方轮流取石子,满足: 1)先手不能在第一次把所有的石子取完; 2)之后每次可以取的石子数介于1到对手刚取的石子数的2倍之间(包含1和对手刚取的石子数的2倍)。 约定取走最后一个石子的人为赢家,求先手必胜态。先手必败态为石头个数为斐波那契数列中的数的情况(从2开始)。下面给出证明:数学归纳法:1.石头个数为2时,结论成立2.若当石头个数为<

2012-11-17 22:41:56 568

深入理解Java虚拟机(第2版)mobi

深入理解Java虚拟机(第2版)mobi

2017-03-27

计算理论基础 习题答案

计算理论基础 第二版 张立昂 等译 , 习题答案

2012-12-31

Mongo帮助文档

MongoDB帮助文档,NoSQL入门必备

2011-10-22

2010计算机专业考研专业课大纲

2010计算机专业考研专业课大纲 清晰有条理 doc

2010-02-02

大学生职业规划范例下载

大学生职业规划范例,参赛作品,我的职业生涯规划

2009-12-30

空空如也

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

TA关注的人

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