随笔分类 - 动态规划(DP)
HDU 3362 Fix (状压DP)
摘要:题意:题目给出n(n <= 18)个点的二维坐标,并说明某些点是被固定了的,其余则没固定,要求添加一些边,使得还没被固定的点变成固定的, 要求总长度最短。 析:由于这个 n 最大才是18,比较小,所以我们考虑是状压DP,当一不固定的点和两个固定的点相连时,这个点也就固定了,这个点以后也是可以使用的,
阅读全文
HDU 3366 Passage (概率DP)
摘要:题意:T组测试数据,一个人困在了城堡中,有n个通道,m百万money ,每个通道能直接逃出去的概率为 P[i] ,遇到士兵的概率为 q[i], 遇到士兵得给1百万money,否则会被杀掉,还有 1-p[i]-q[i] 的概率走不通,要回头。问在可以选择的情况下,逃出去的概率是多少? 析:这个题很明显
阅读全文
CodeForces 540D Bad Luck Island (DP)
摘要:题意:一个岛上有石头,剪刀和布,规则就不用说了,问你最后只剩下每一种的概率是多少。 析:很明显的一个概率DP,用d[i][j][k]表示,石头剩下 i 个,剪刀剩下 j 个,布剩下 k 个,d[r][s][p] = 1,那状态转发方程怎么写呢?是这样的 如果石头减少了1,那么肯定是布干的,那么是哪个
阅读全文
CodeForces 690C2 Brain Network (medium)(树上DP)
摘要:题意:给定一棵树中,让你计算它的直径,也就是两点间的最大距离。 析:就是一个树上DP,用两次BFS或都一次DFS就可以搞定。但两次的时间是一样的。 代码如下: 两次BFS:
阅读全文
POJ 1985 Cow Marathon (树形DP,树的直径)
摘要:题意:给定一棵树,然后让你找出它的直径,也就是两点中的最远距离。 析:很明显这是一个树上DP,应该有三种方式,分别是两次DFS,两次BFS,和一次DFS,我只写了后两种。 代码如下: 两次BFS: 一次DFS:
阅读全文
UVa 1220 Party at Hali-Bula (树形DP,最大独立集)
摘要:题意:公司有 n 个人形成一个树形结构,除了老板都有唯一的一个直系上司,要求选尽量多的人,但不能同时选一人上和他的直系上司,问最多能选多少人,并且是不是唯一的方案。 析:这个题几乎就是树的最大的独立集问题,只不过多一个判断唯一性而已。用两个数组,一个用来记录人数,一个用来判断唯一性。 d[u][0]
阅读全文
CoderForces 518D Ilya and Escalator (期望DP)
摘要:题意:给定 n 个人,在每一时刻一个人进入地铁的概率是 p,站着不动的概率是 1-p,然后问你 t 时间地铁里有多少人。 析:很明显这是一个期望DP,用d[i][j]表示 i 时刻 j 个人进入地铁的概率,有两种情况,要么第 i-1 时刻已经有 j 个人了,那么就不进,要么第 i-1 时刻只有 j-
阅读全文
CoderForces 687C The Values You Can Make (01背包,DP)
摘要:题意:给定 n 个硬币和一个值 k,问你在用一些硬币组成面值为 k的这些硬币还能组成多少种其他面值。 析:如果这样说,由这些硬币能组成多少种不同的面值,那么是不是就很熟悉了,这不就是01背包么,这个题又加了一个限制条件,是用能组成 k 的这些硬币,也是类似的,d[i][j],表示硬币 j 能组成面值
阅读全文
UVa 10118 Free Candies (记忆化搜索+哈希)
摘要:题意:有4堆糖果,每堆有n(最多40)个,有一个篮子,最多装5个糖果,我们每次只能从某一堆糖果里拿出一个糖果,如果篮子里有两个相同的糖果, 那么就可以把这两个(一对)糖果放进自己的口袋里,问最多能拿走多少对糖果。 析:首先看到的是时间30s,这么长时间,一想应该是暴力了吧,后来一想应该是记忆化搜索,
阅读全文
UVa 1025 A Spy in the Metro (DP动态规划)
摘要:题意:一个间谍要从第一个车站到第n个车站去会见另一个,在是期间有n个车站,有来回的车站,让你在时间T内时到达n,并且等车时间最短, 也就是尽量多坐车,最后输出最少等待时间。 析:这个挺复杂,首先时间是一个顺序,设d(i,j)表示时刻 i 在第 j 个车站,最少还要等待多长时间,那么边界是d(T, n
阅读全文
POJ 3744 Scout YYF I (概率DP+矩阵快速幂)
摘要:题意:小明要从1走过一段直线雷区,给定n个地雷的坐标,他走一步的概率是p,两步的概率为1-p,问你他能安全通过雷区的概率。 析:很明显这是一个概率DP,用d(i)表示到达 i 时他安全的概率,那么d[i] = p * d[i-1] + (1-p) * d[i-2];这个状态转移方程很好理解, 就是说
阅读全文
UVa 12186 Another Crisis (DP)
摘要:题意:有一个老板和n个员工,除了老板每个员工都有唯一的上司,老板编号为0,员工们为1-n,工人(没有下属的员工),要交一份请愿书, 但是不能跨级,当一个不是工人的员工接受到直系下属不少于T%的签字时,自己也会签字,并交给上级,问你最少有多少工人签字,才能让老板收到请愿书。 析:题意比较简单,也好理解
阅读全文
HDU 3555 Bomb (数位DP)
摘要:题意:给定一个数,让你求从1到这个数的所有数字中含49的数字数量。 析:看到这一个题,首先想到的就是暴力,可是,我一看数的大小就放弃了,2^63-1。。。 还是问学长吧,学长说数位DP,听他说了好久,才明白,好复杂啊,在这里分享一下。 这是我参考的博客网址:http://www.cnblogs.co
阅读全文
UVa 111 History Grading (简单DP,LIS或LCS)
摘要:题意:题意就是坑,看不大懂么,结果就做不对,如果看懂了就so easy了,给定n个事件,注意的是, 它给的是第i个事件发生在第多少位,并不是像我们想的,第i位是哪个事件,举个例子吧,4 2 3 1, 表示的是第一个事件发生在第四,第二个事件发生在第二位,第三个在第三位,第四个在第一位。 然后输入n个
阅读全文
HDU 1503 Advanced Fruits (LCS+DP+递归)
摘要:题意:给定两个字符串,让你求一个最短的字符串,并且这个字符串包含给定的两个。 析:看到这个题,我知道是DP,但是,不会啊。。。完全没有思路么,我就是个DP渣渣,一直不会做DP。 最后还是参考了一下题解,主要是这样的,要想最短,就必须让两个字符串重复的最多,也就是LCS, 然后把剩下的不相同的字符再给
阅读全文
HDU 1513 && POJ 1159 Palindrome (DP+LCS+滚动数组)
摘要:题意:给定一个字符串,让你把它变成回文串,求添加最少的字符数。 析:动态规划是很明显的,就是没有了现思路,还是问的别人才知道,哦,原来要么写,既然是回文串, 那么最后正反都得是一样的,所以我们就正反求LCS,这样公共的就求出来了,那么再用总数减掉这个LCS, 那么剩下的肯定就是没有配对的了,就得必须
阅读全文
HDU 1087 Super Jumping! Jumping! Jumping! (DP+LIS)
摘要:题意:给定一个长度为n的序列,让你求一个和最大递增序列。 析:一看,是不是很像LIS啊,这基本就是一样的,只不过改一下而已,d(i)表示前i个数中,最大的和并且是递增的, 如果 d(j) + a[i] > d(i) d(i) = d(j) + a[i] (这是保证和最大),那么怎么是递增呢?很简单嘛
阅读全文
HDU 2844 Coins (多重背包问题DP)
摘要:题意:给定n种硬币,每种价值是a,数量是c,让你求不大于给定V的不同的价值数,就是说让你用这些硬币来组成多少种不同的价格,并且价格不大于V。 析:一看就应该知道是一个动态规划的背包问题,只不过是变形,那我们就统计不大于V的不同价格数,也容易实现, 对于多重背包我们是把它转化为01背包和完全背包来解决
阅读全文
UVa 1638 Pole Arrangement (递推或DP)
摘要:题意:有高为1,2,3...n的杆子各一根排成一行,从左边能看到L根,从右边能看到R根,求杆子的排列有多少种可能。 析:设d(i, j, k)表示高度为1-i的杆子排成一行,从左边看到j根,从右边看到k根的数目。当i>1时,我们按照从大到小的顺序按排杆子, 假设已经安排完i-1根了,那么还剩下一根就
阅读全文
浙公网安备 33010602011771号