摘要: http://acm.hdu.edu.cn/showproblem.php?pid=2955题意: 第一行第一个小数,是这个人被抓住的概率最大不能超过这个数,第二个是有N个银行。一个整数和小数分别为这个银行有多少钱和被这个银行抓住的概率。求出这个小偷在不超过自己抓住的最大概率中抢更多的银行。坑爹: f 数组 初始化为0 ,但是 f [0] 要为1,因为不抢任何银行的时候永远是成功的。所有银行的钱数加起来是“背包”的容量,不被抓的概率是价值。解法: 套用01背包的状态转移方程,解出不被抓住的概率,然后用1减去它,再和被抓住的概率比较。View Code 1 #include<iostre. 阅读全文
posted @ 2012-09-06 16:40 pc.... 阅读(186) 评论(0) 推荐(0)
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=2546题意: 给你一些饭菜的价格,和你饭卡的余额,余额大于等于5元时可以刷任何价格的菜,算出你买了这些菜之后饭卡中最少的一组解(余额可以为负)。坑爹: 这道题中,他的价格也就是背包中的容量,也是背包中的价值,总余额如果超出5元要将总余额减去5元的钱尽量用掉。 解法 用到了一点贪心的思想,用一个sort排序,将便宜的菜买了,尽量将饭卡里的余额靠近5元,然后在买一个最贵的菜,这样就会让饭卡里的余额最少了。View Code 1 #include<iostream> 2 #include<algo 阅读全文
posted @ 2012-09-05 20:57 pc.... 阅读(196) 评论(0) 推荐(0)
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1203题意: 一道01背包的水题,每一行分别是申请所需的费用和被录取的概率,Speakless只有一定的钱,要在这些规定的钱内找到至少能被一所学校录取的概率的最大值。坑爹: 才刚开始看01背包问题,对初始化的的操作不是很清楚,而且这个在计算f[n]的时候要尽量的小,而达到1-f[n]最大。解法: 套用01背包的公式,而且将 f 数组全部初始化为1,从而保证没有一所学校录取的时候 1 - f [n] 为 0.View Code 1 #include<iostream> 2 using namespa 阅读全文
posted @ 2012-09-05 20:00 pc.... 阅读(160) 评论(0) 推荐(0)
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1162题意: 给出N个坐标,坐标之间的距离就是权值,是个最小生成树的问题,用Kruskal算法做。坑爹: 一道简单的最小生成树的题目,N个点对应要有N-1条边,没什么难点主要是要细心点就行了。解法: Kruskal算法的模版一套上去就行了。View Code 1 #include<iostream> 2 #include<math.h> 3 #include<algorithm> 4 using namespace std; 5 6 const int maxn = 100 阅读全文
posted @ 2012-09-05 19:52 pc.... 阅读(208) 评论(0) 推荐(0)
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=2602题意: 给你N根骨头,分别有它们的价值和体积,他的袋子有规定最多能装多少体积的骨头,需要你求出他收集的骨头的总体积不超过他的袋子的情况下算出袋子中骨头价值最高的一个解。坑爹: 今天才刚看 01背包 ,现在也不是太明白吧,这题是水题,只要套下公式就出来了。解法: 用01背包那个状态转移方程(资料上复制的伪代码)for i=1..N for v=V..0 f[v]=max{f[v],f[v-c[i]]+w[i]};View Code 1 #include<iostream> 2 using na 阅读全文
posted @ 2012-09-05 10:43 pc.... 阅读(193) 评论(0) 推荐(0)
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=3790题意: 普通的最短路问题,只不过加了个费用,在有多条最短路的情况下输出花费最少的那组答案.(双重权值)坑爹: 有重边的情况,开始做的时候当判断重边比原来小的时候,还去判断费用是不是比原来小..这样就会出错..是在找最短路径的前提下找到最小的花费.disprice数组和dis数组同步操作,但对dis进行松弛的时候,如果经过另一条路径在到目的地就要比较这两条路哪变的费用少.解法: 用个Dijkstra算法将dis和disprice进行松弛解出答案.View Code 1 #include<iostr. 阅读全文
posted @ 2012-09-05 00:40 pc.... 阅读(196) 评论(0) 推荐(0)
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=2553题意: 给出个N,代表N*N表格,在里面放N个皇后,要保证每个皇后之间不会攻击到,皇后的攻击范围:自己所在的那一行,自己所在的那一列,自己所在的两条45度对角线。坑爹: 如果输入一个N就去搜一次的话,数据给出每一次的N都是10的话就会超时。解法: 反正这题N最大才10,就把1到10的结果先保存在数组中,然后每输入一次N就利用下表访问一次数组得到答案。View Code 1 #include<iostream> 2 using namespace std; 3 4 int N; 5 int c 阅读全文
posted @ 2012-09-04 20:15 pc.... 阅读(182) 评论(0) 推荐(0)
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1728题意: 一个迷宫...从起点走到终点,拐弯次数有限制的情况下找到最优的解。坑爹: 本来用结构体来记录坐标、走的步数和拐弯次数,但是发现如果搜一条路径发现行不通的话这条路上所有点都被标记了,当我再次经过这里面的某个点的时候就不能通过了。比如说我一开始行不通的那条路通过某个点是左右通过的,但我下次再要从上或者从下经过这个点的时候就会过不了。解法: 每次向一个方向拓展时将这一个方向所有满足条件的点全部进队,这样就解决了某个点不会因为之前被标记过而导致下一次以另外一个方向进入这个店的时候就不给经过的问题。... 阅读全文
posted @ 2012-09-04 20:07 pc.... 阅读(245) 评论(0) 推荐(0)
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1253题意: 一个三维的空间坐标分别表示为(x,y,z),Ignatius要从(0,0,0)开始逃,要到出口(A-1,B-1,C-1),他只能往6个方向走(上下左右前后),每走一步算一个单位时间,要在魔王回来的时候内走到出口(刚好也算逃出)。坑爹: 这题的数据很恶心,害我WA了很多次,当A==B==C==1的时候也就是入口就是出口的时候,要分入口(出口)是不是墙,如果是则不能逃出,反之可以逃出,解法: 广搜。View Code 1 #include<iostream> 2 #include< 阅读全文
posted @ 2012-09-04 17:29 pc.... 阅读(244) 评论(0) 推荐(0)
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1690题意: 第一行数据分别为L1.L2.L3.L4.C1.C2.C3.C4,和坐出租车的意思是差不多的,在行驶了0到L1距离的时候价格为C1,L1到L2之间的时候用C2 ......第二行N和M代表在下面有N个站(坐标),M个问题。计算出一个站到另一个站所需的最少的钱。Sample:1 2 3 4 1 3 5 74 212341 44 11到4直接不换乘的话需要5元,但在1-2,2-3,3-4这样换乘的话只用3元。坑爹: 数据比较大,要用__int64,我把INF值直接改成了-1这样虽然多了几条语句但思.. 阅读全文
posted @ 2012-09-04 17:11 pc.... 阅读(192) 评论(0) 推荐(1)