本博客rss订阅地址: http://feed.cnblogs.com/blog/u/147990/rss

随笔分类 -  OJ

摘要:题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1561很明显这是个分组的有依赖的背包问题(背包问题的扩展请参考Tianyi Cui 的背包九讲http://love-oriented.com/pack/)。构建树:若攻击城堡 a 要先攻击城堡 b,则 a 是 b 的儿子,这样构建以后是一个森林,添加一个宝物数量为0的节点作为整个森林的树根以后就是一颗树了。递推方程:设dp[a][b] 表示以 a 为根节点的子树,要攻击 b 个城堡所获得的最大金钱数目。其中 a 城堡是已经攻下来的。 则 dp[a][b] = max( dp[a][b]... 阅读全文
posted @ 2013-06-15 15:45 tenos 阅读(724) 评论(0) 推荐(0) 编辑
摘要:题目地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1025如果我们定义在一个sticks序列中,对所有的 j>i 均满足 : sticks[i].l>=sticks[j].l 且sticks[i].w>=sticks[j].w ,则称这个序列为一个 “簇”。本题就是求把所有的元素分为最少的簇数。假设输入为A,首先把A排序(按 l 的增序,若两个元素的 l 相同,则按 w 的增序),排序后的序列称为B,对序列B按照元素的属性 w 求最长递减子序列的长度(严格递减),记为len。则我们要求得最少簇数 阅读全文
posted @ 2013-04-19 23:06 tenos 阅读(485) 评论(0) 推荐(0) 编辑
摘要:题目地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1074这道题的dP是基于 “最大子段和” 的dp方法例如求数组 1 2 -3 4;-5 6 -1 8 的最大子矩阵和,可以把两行相加得到数组-4 8 -4 12,对这个数组求最大子段和为8+-4+12=16,所以矩阵对应的最大子矩阵为2 -3 4;6 -1 8那么可以利用以上思想,对于m*n的矩阵A,选取他的第 i 行到第 j 行的数据组成子矩阵Aij (j-i+1行n列),Aij 对应的最大子段和可以如下求得:对每一列的值进行累加得到一个一维数组(1*n),对 阅读全文
posted @ 2013-04-16 21:53 tenos 阅读(400) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1027设f[i][j]为基因1的前 i 个核苷酸与基因2的前 j 个核苷酸匹配所得的最高分数。则 f[i][j]= max { f[i-1][j-1]+ score[i][j], //基因1的前 i-1 个核苷酸与基因2的前 j-1 个核苷酸匹配,score[i][j]为核苷酸 i 与核苷酸 j 匹配的得分 f[i-1][j] + score[i][], //基因1的前 i-1 个核苷酸与基因2的... 阅读全文
posted @ 2013-04-15 21:10 tenos 阅读(320) 评论(0) 推荐(0) 编辑
摘要:题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1013采用动态规划解决。设f[n][x][y] 表示前n辆车装了x个装备1和y个装备2之后能装的最多的装备3的个数。递推关系如下:f[n][x][y] = max ( f[n - 1][x - a][y - b] + c); 其中f[0][x][y]=0其中a和b的范围为第n辆车可以装的装备1和装备2的个数, c 为第n辆车装完a个装备1和b个装备2后可以装的装备3的个数。通过递推求得f[n][x][y]后,可以遍历x和y(x,y的范围可以在上述递推的过程中得. 阅读全文
posted @ 2013-04-15 14:04 tenos 阅读(630) 评论(0) 推荐(0) 编辑


本博客rss订阅地址: http://feed.cnblogs.com/blog/u/147990/rss

公益页面-寻找遗失儿童