自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Bernini @ buffalo

ME转CS,蛋疼菊紧中.........

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

原创 099_二分图判定

只允许使用两种颜色,对图进行着色,相邻点的颜色一定要不同,问是否能成功。 比较经典的邻接表图算法。 用dfs来实现。对于每一个节点的邻接节点,依次进行dfs染色,若有一个染色失败(两个点颜色相同),就返回失败 对所有点循环过后,若没有失败,就返回成功。 例子里面的表来自《挑战程序竞赛》第二版98页。//// 099_binary garph.cpp// changl

2015-12-31 16:25:29 316

原创 088_食物链问题(并查集)

食物链问题:有N个动物,每个动物只能为A,B,C三种动物中的一种,已知 A吃B, B吃C, C吃A。 现在给出K条信息,每条信息值可能为以下两种中的一种: 1. x,y属于同一种动物; 2. x吃y。 要求找出这K 条信息中不正确的条数。 题源来自《挑战程序竞赛》第二版88页。 此题使用并查集来实现应该比较方便。 先初始化并查集,对于每一个动物x,创建三个元素:x,x+N,

2015-12-31 06:56:36 407

原创 STL set 与 map 实例

set://// 081_STL set.cpp// changlle//// Created by user on 12/30/15.// Copyright (c) 2015 user. All rights reserved.//#include #include using namespace std;int main () { se

2015-12-30 15:14:29 293

原创 077_木板切割问题(优先队列)

木板切割问题的优先队列实现方式。  在c++中,首先要定义一个从小到达的优先队列,参见c++代码。//// 077_fence repair(pq).cpp// changlle//// Created by user on 12/30/15.// Copyright (c) 2015 user. All rights reserved.//#include

2015-12-30 14:12:38 1997

原创 074_加油站问题(优先队列)

加油站问题,一辆车在每个加油站可以加一定数量的油,邮箱容量没有上限,走一个单位的路程消耗一个单位的油量,问汽车是否能够到达终点,如果可以,最少加几次油?   从这个角度思考问题较方便:   当汽车经过某个加油站时,只把油装在车上,并不加入油箱。等到油箱为空时再加油,与在加油站加油的效果一致。(《挑战程序竞赛》第二版的说法为获得一次加油的机会)   所以当油箱用尽时,选择最大的那桶油来加

2015-12-30 13:23:34 901

原创 068_多重集组合数

有n种物品, 第i只能怪物品有a[i]个。不同种类的 物品可以相互区分,但同一种类的物品无法相互区分,从中取出m个的话,求取的方案数。 题源来自《挑战程序竞赛》第二版 68页。 根据其定义,有如下DP数组: dp[i+1][j]=从前i个物品中取出j个的组合数。 为了从前i个物品中取出j个,可以这样实现:从前i-1种物品取出j-k种,再从第i种物品中取出k个,所以,有以下递推式:

2015-12-30 07:39:12 348

原创 067_划分数

有n个无差别物品,划分成不超过m组,求划分的方案个数。  此类DP 问题定义如下:      dp[i][j]=j个物品的i划分的总数。 DP的时候分两部分讨论:如果划分没有某一组是空的,即正好划分成i组,所以每组至少可以拿出一个物品,即为dp[i][j-i]。 或者至少有一组是空的,即其划分数为dp[i-1][j];  so, dp[i][j]=dp[i][j-i]+dp[i

2015-12-29 17:40:12 274

原创 065_最长递增子序列

最长递增子序列,经典问题,有别于最长子序列问题,元素必须递增。  cse531 mid2的时候考过的问题,要求n^2, 某人做了个半对还沾沾自喜.........弱爆了。 这里给出nlogn的解法,《挑战程序竞赛》书中实例代码相当简洁优雅,三行搞定。 以下po c++ 代码。 //// 065_lasc.cpp// changlle//// Created by us

2015-12-29 16:37:32 462

原创 063_多重部分和问题(DP)

多重部分和问题:给定一组数,并且给定期中每个数出现的次数,试问是否存在这样的组合,使其和为一个值K?(某个数可以取多次,但不能超过其次数)     如:a={3,5,8}            m={3,2,2}            K=17;           即 数字3有3个,数字5有2个,数字8有2个。是否存在和为17的组合?    就此情况而言,存在3*3+8=17

2015-12-29 09:51:07 373

原创 061_改变DP对象的01背包问题

经典的01背包问题有时候遇到允许重量过大时会遇到问题。以重量为对象来进行DP会导致运行时间过长。   解决方案是更换DP的对象,当总价值较小时可以以此为对象进行DP,具体如下:   dp[i+1][j]=min(dp[i][j],dp[i][j-v(i)]+w(i))  即寻找价值一定时的重量的最小值。  此处需要注意的问题是初始化:   1. 为了使DP顺利进行,在总价值无法

2015-12-28 16:31:41 239

原创 057_完全背包问题(DP)

完全背包问题,不同于01背包问题,每个物品有无限个可以取。    一般会想到在双层循环的条件下再增加一层循环k,来获得重量为j的情况下,只用前i个物品的价值的最大值。    然而在计算时,并不需要惊醒k循环,因为在计算dp[i][j]时,dp[i][j-w(i)]已经计算过了,所以必有:              dp[i][j]=max(dp[i-1][j], dp[i][j

2015-12-27 15:35:43 299

原创 056_最长公共子序列

最长公共子序列问题,上完cse531还写不出来,要去面壁了。//// 056_longest subsequence.cpp// changlle//// Created by user on 12/27/15.// Copyright (c) 2015 user. All rights reserved.//#include #include

2015-12-27 15:18:15 217

原创 051_01背包(DP)

01背包~~~~~不多说了~ //// 051_01 knap sack.cpp// changlle//// Created by user on 12/27/15.// Copyright (c) 2015 user. All rights reserved.//#include #include using namespace std;in

2015-12-27 14:57:34 208

原创 047_木板切割问题(fence repair) poj 3253

又是一个贪心问题。 这里使用数组遍历来找到第一小与第二小的木板。后续会给出优先队列的实现方式。//// 047_fence repair.cpp// changlle//// Created by user on 12/26/15.// Copyright (c) 2015 user. All rights reserved.//#include #inc

2015-12-27 10:53:01 835

原创 045_saruman's aramy (区间覆盖问题)POJ 3069

给定区间的半径,要求在给定的点集中选择某些点,作为中间点来覆盖左右两边的点。 要求所用的点的个数最少。    贪心算法实现。   题源来自《挑战程序竞赛》第二版 45页。//// 045_saruman's aramy.cpp// changlle//// Created by user on 12/26/15.// Copyright (c) 201

2015-12-27 10:47:06 237

原创 043_字典序最小问题(best cow line)

poj 3617  从一个字符串s中头部或者尾部取同一个字符,加到字符串T中,要求字符串T的字典序最小。  对s和s的逆序s'进行比较。如果一样再对下一对进行比较,保证较小的字母较早被访问。  题源来自《挑战程序竞赛》第二版 43页。//// 043_best cow line.cpp// changlle//// Created by user on 12/

2015-12-27 10:40:01 275

原创 040_区间调度(贪心)

经典的贪心算法的例子。算法导论里面有讲。同样用c++的pair类型与sort实现效率较高。题源来自《挑战程序竞赛》第二版40页。//// 040_interval.cpp// changlle//// Created by user on 12/26/15.// Copyright (c) 2015 user. All rights reserved.//#incl

2015-12-27 10:35:53 368

原创 039_硬币问题(贪心)

入门级的贪心算法实现。不得不说书上的示例代码真心简介。题源同样来自《挑战程序竞赛》39页。//// 039_coin.cpp// changlle//// Created by user on 12/25/15.// Copyright (c) 2015 user. All rights reserved.//#include using namespace st

2015-12-27 10:31:09 293

原创 035_迷宫最短路径

经典的BFS问题, 貌似amazon有道题和这个挺像的~~参见《挑战程序竞赛》第二版34页。 用队列实现比较方便。依旧XCODE 蛋疼中。废话不多说了,直接po c++代码。//// 035_bfs.cpp// changlle//// Created by user on 12/24/15.// Copyright (c) 2015 user. All rights r

2015-12-27 10:06:03 395 1

原创 032_池塘问题(lake counting)

经典的DFS问题,参见《挑战程序竞赛》第二版 32页。只需注意每次对一个 'W' 做完DFS后,将其替换成'.',保证不会重复搜索。个人感觉可以用另一个数组记录访问过的原数组的位置,进一步加快速度。不多说了,上代码,用蛋疼的XCODE写的。//// 033_water_counting.cpp// changlle//// Created by user on 12/22

2015-12-27 09:54:18 366

ProbabilityConcepts

Probability Concepts 经典的不能再经典的书籍,高机器学习的一定要看啊。

2015-09-29

空空如也

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

TA关注的人

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