动态规划
jiang199235jiangJJ
这个作者很懒,什么都没留下…
展开
-
动态规划 HDU 动态规划题集1\
1.Robberies http://acm.hdu.edu.cn/showproblem.php?pid=2955 背包;第一次做的时候把概率当做背包(放大100000倍化为整数):在此范围内最多能抢多少钱 最脑残的是把总的概率以为是抢N家银行的概率之和… 把状态转移方程写成了f[j]=max{f[j],f[j-q[i].v]+q[i].money}(f[j]表示在概率j之下能抢的转载 2012-04-11 10:10:01 · 812 阅读 · 0 评论 -
poj 2152 一道很难的树型DP
题目:poj 2152 Fire 我想说的:以前做背包的题目做多了,脑子形成了一种就是所有动态规划就是在数组上进行等一些固定的思想。结果最近在做一些题目的时候,感觉无从下手,想好久都没结果。非常庆幸自己做了这类题目,让我从那种狭隘的思想中做出来。以后就要根据实际情况研究状态了。 题意:有n个城市,每两个城市只有一条路连接,(所以可以当成是一颗树)。现在要建原创 2012-07-26 11:17:44 · 3193 阅读 · 1 评论 -
poj 2342 Anniversary party 简单的DP
题目:poj 2342 Anniversary party 我想说的:由于是在树上进行的dp,所以在网上搜树型DP的时候,就搜到了,结果感觉题目很水,不过为了保证周题数量,就做了吧。不过不知道为什么,我的时间会那么多,感觉自己的思路很清晰,也没有多余的地方啊!题意:一个人要举办一个party,邀请的一些人中,有的人是有的人的顶头上司,为了使每个人都可以玩的尽兴,所以不想让他们见面,所以现在原创 2012-07-26 11:35:38 · 1206 阅读 · 0 评论 -
poj 3107Godfather 树型dp或者dfs(简单的树的操作)
题目:poj 3107Godfather题意:给定一棵无根树,删除树中一个节点,使得剩下各子树的包含的节点数最大值最小,问树中有多少个这样的节点? 然后字典序输出。解题:遍历一遍所有节点就可以了。很简单,但是TLE了一上午,原因就是数据很变态吧,卡STL(可能是自己用的不熟练吧),然后自己写一个就直接AC了。代码如下:#include #include #include #i原创 2012-08-13 09:32:50 · 693 阅读 · 0 评论 -
poj 3659 Cell Phone Network 树型DP也是树的最小支配集
题目:poj 3659 Cell Phone Network题意:农夫给他的每个牛发另一个手机(有点扯),现在要在农场建设信号塔以便所有的牛可以相互联系,每个信号塔可以供和他相连的农场使用,所有农场形成一颗树,问要达到要求最少建塔的数量。也就是给一颗树,每个节点可以覆盖和他相连的所有节点,现在问你用最少的点把所有的点覆盖完。这个题目和poj1463有点相似,poj1463是用点覆盖边,相对原创 2012-08-17 17:34:03 · 2890 阅读 · 1 评论 -
动态规划+结题报告
以下是一些最近练习的动态规划题目,顺便附带了自己写的解体报告,一些不足的地方,欢迎留言指教(内容更新中)。1、poj3181 Dollar Dayz 这个题目和整数划分差不多,是一个有稍微变化的完全背包。动态转移方程:dp[i]=dp[i]+dp[i-j];解体报告。2、dhu 1561 The more, The Better这个题目是简单的很裸的依赖背包问题,由于是01背包和分原创 2012-07-10 09:09:33 · 662 阅读 · 0 评论 -
poj 1947 树型DP(依赖背包)
题目:http://poj.org/problem?id=1947题意:给一颗树包含N个节点,问你最少剪去几个边可以得到一颗包含P个节点的子树。解题思路:这个题目让我想了一天加一晚上,开始一直想用DP[i][j]表示以i为父节点的树,保留j个子节点至少要剪的边数,结果一直想不出思路,实在没办法,在网上找的解题报告很多也是这个想法,但是在我的不解努力中,终于找到一个独树一帜的解题思路:用DP原创 2012-07-24 08:18:09 · 988 阅读 · 0 评论 -
hdu 1011 树型DP(依赖背包)
题意:你作为星河站队的leader,手下有m个trooper;现在让你去攻占一个基地:有n个洞穴组成,入口是洞穴1,洞穴之间用n-1条边链接,每个洞穴里面包括x个bugs,和他们的brains,你的每个trooper可以消灭20个bugs;问你最多可以得到多少个brains。需要注意的是:你没做过的叶子必须要留人,也就是说就算某个地方的bug是0个,你也要牌一个trooper过去。写这个题原创 2012-07-20 10:53:48 · 1013 阅读 · 0 评论 -
hdu 1561 依赖背包
题意:n座城堡,每个里面都有宝物,要求在你可以攻占m个城堡得到的最多的宝物,但是如果要攻破一个城堡,必须要攻破它依赖的那个城堡,例如,如果a依赖b,那么如果想要攻破a就必须先攻破b。把每个城堡看作是物品,那么这个物品的城堡数量是1,价值就是宝物了。解题思路:根据题意知道这种关系会形成一颗多叉树,根节点是0.从P=0开始,1、遍历所有P的孩子,遇到某个孩子还有孩子,就把该节点当作P,继续1,原创 2012-07-17 15:51:53 · 947 阅读 · 0 评论 -
hdu 1502 动态规划+大数
首先说,我的代码很省时间,就如大家都看到了,我用的是打表,并且是真的把表打出来贴到代码里了。题意:给一个字符串,只有ABC组成,并且A、B、C的个数都是n(0解题:设函数dp[i][j][k]表示该序列中有i个A,j个B,k个C组成,则dp[i][j][k]是有dp[i-1][j][k],dp[i][j-1][k],dp[i][j][k-1]这三个添加过来的,所以动态转移方程式dp[i原创 2012-04-12 09:51:02 · 1183 阅读 · 0 评论 -
hdu 1502解题报告(动态规划+大数)
解题:设函数dp[i][j][k]表示该序列中有i个A,j个B,k个C组成,则dp[i][j][k]是有dp[i-1][j][k],dp[i][j-1][k],dp[i][j][k-1]这三个添加过来的,所以动态转移方程式dp[i][j][k]=dp[i-1][j][k]+dp[i][j-1][k]+dp[i][j][k-1];同时注意,dp的结果很大,要用到大数。设sum[i原创 2012-04-12 10:41:15 · 1417 阅读 · 0 评论 -
HDU动态规划专题
Robberies http://acm.hdu.edu.cn/showproblem.php?pid=2955背包;第一次做的时候把概率当做背包(放大100000倍化为整数):在此范围内最多能抢多少钱 最脑残的是把总的概率以为是抢N家银行的概率之和… 把状态转移方程写成了f[j]=max{f[j],f[j-q[i].v]+q[i].money}(f[j]表示在概率j之下能抢的大洋);转载 2012-04-11 17:43:31 · 721 阅读 · 0 评论 -
最长公共子序列(动态规划)
有关最长公共子序列的详细解释请看百度百科http://baike.baidu.com/view/2020307.htm。动态规划法经常会遇到复杂问题不能简单地分解成几个子问题,而会分解出一系列的子问题。简单地采用把大问题分解成子问题,并综合子问题的解导出大问题的解的方法,问题求解耗时会按问题规模呈幂级数增加。为了节约重复求相同子问题的时间,引入一个数组,不管它们是否对最终解有用转载 2012-04-16 17:50:51 · 637 阅读 · 0 评论 -
HDU 1159 最长公共子序列
题意就是给两个字符串,找最长公共子序列。由于是最裸的题了,就不讲了。有关最长公共子序列的详细讲说,请到http://blog.csdn.net/jiang199235jiangjj/article/details/7466667。代码如下:#include #include #include #define N 1000using namespace std;char str1[原创 2012-04-17 11:09:01 · 551 阅读 · 0 评论 -
nyoj90 整数拆分(递归,背包两种解法)
题目:http://acm.nyist.net/JudgeOnline/problem.php?pid=90。把一个整数拆分成的所有情况。递归代码: #include#includeusing namespace std;int z[11];int zh(int n,int m){ if(n==1||m==1) return z[n]=1; if(m==n) r原创 2012-07-10 09:42:16 · 2709 阅读 · 0 评论 -
poj 3181 Dollar Dayz
题意:给你一个数n,让你用从1…k,其中的数表示,问你有几种表示方法,同时附加简单的大叔问题。这个题目和整数拆分差不多。用数组ans[i]表示数i可以被1…k表示的种数;然后如果用j(1动态转移方程:dp[i]=dp[i]+dp[i-j]; #include#include#include using namespace std;#define N 10000int a原创 2012-07-10 09:26:20 · 644 阅读 · 0 评论 -
hdu 3496 Watch The Movie 二维费用背包
题意:直接说数据吧,容易理解。每组数据第一行给三个数,N,M,L;N表示总共有N重电影票(每种仅一张),M表示你必须买M张,不能多,也不能少,也就是恰好M张;L表示你看电影的时间上限。随后的N行, 每组代表一种电影票,包括两个数,第一个是这张电影票如果看的话需要的时间,第二个代表你对这个电影的兴趣度。问题就是要求你输出你可以得到的最大兴趣度。这个题目是背包九讲里面的二维费用背包,并且又多了原创 2012-07-10 09:01:19 · 671 阅读 · 0 评论 -
poj 1463 Strategic game 树型dp,最小点集覆盖
题目:http://poj.org/problem?id=1463题意:给一颗树,用最少的点把所有的边覆盖了。可以用动态规划,也可以用最小点集覆盖(最裸的题目)。很水的一个题目,又是一个树的遍历,哎!去网上搜的树型DP。。。。。。。。。既然已经做了,就写个解题吧!解题:这个题目和poj3659差不多,这个是覆盖边,那个是覆盖点(poj3659解题报告),现在只说用dp的解法。每原创 2012-08-17 17:44:24 · 1363 阅读 · 0 评论