
DP
文章平均质量分 78
limchiang
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
01背包在特殊条件下的优化
http://acm.hdu.edu.cn/showproblem.php?pid=3732 题意:已知物品的价值和cost,求在有限背包容量下的最大价值,此题的特殊之处在于 :物品的数量极大(100000),但 价值 和 cost 所有组合数只有100种,故可以将传统的01背包转换成多重背包并用二进制优化 #pragma warning (disable:4786) #include原创 2012-10-29 21:24:46 · 585 阅读 · 0 评论 -
DP初次总结
在做了一系列的背包问题,看了DD的背包九讲后,在这里,我想脱离背包问题,对更一般的动态规划做一次小小总结。 动归性质与举例 动态规划是把原问题分解为相对简单的子问题,来求解复杂问题。动态规划的实质是分治思想和解决冗余,动态规划算法是将问题分解为更小的、相似的子问题,并存储子问题的解而避免计算重复的子问题,以解决最优化问题的算法策略。 动态规划背后的基本思原创 2012-11-04 10:27:17 · 271 阅读 · 0 评论 -
多重背包的变形
http://acm.hdu.edu.cn/showproblem.php?pid=1085 1、2、5 三种面值的硬币各有num[0]、num[1]、num[2] 个,问不能用它们组合支付的最小的钱数? 两种方法:①多重背包(需用二进制优化,否则超时)、②直接推算 多重背包代码: #pragma warning (disable:4786) #include #include #原创 2012-10-29 21:09:14 · 262 阅读 · 0 评论 -
多重背包(二进制优化)+分组背包
http://poj.org/problem?id=3260 网上有篇很好的报告,觉得不错,就拷了些过来 网址:http://www.cppblog.com/Davidlrzh/articles/135614.html 题意:John去买东西,东西的价格是T(1 <= T <= 10000),John所在的地方有n(1 <= n <= 100)种的硬币,面值分别为V1, V2原创 2012-10-27 15:04:53 · 848 阅读 · 0 评论 -
poj 1170 二解 之 背包
题目链接 题意“:有 b种商品 (0 c(1 , k(1 , p (1 (0 (1 c(编码),k(需购买数量)两个属性,最后是买这个方案中的所有商品给定的数量需要的总价格。问怎样选择优惠方案能最省钱? #include #include #include using namespace std; #define nMAX 6 /** 五维数组dp表示五种(或小于五种)商品各原创 2013-03-01 21:14:03 · 319 阅读 · 0 评论 -
POJ 1260 Pearls 解析
题目链接 题意:有 c (1 错误思路:贪心。从等级最低的开始,判断将其全部用高1等的珍珠来替代是否划算,是则替换并接着试着向上合并,不是则购买这一等级的珍珠。 //num[i] 表示需购买的第i等级的珍珠的数量 //price[i] 表示每颗第i等级的珍珠的价格 // c 表示总的等级数 for( i = 1; i < c; i ++ ){ if( ( num[i] + 10 )原创 2013-02-22 15:03:05 · 450 阅读 · 0 评论 -
POJ 1159 Palindrome 之解法二 DP
题目链接 题意:给定一个长度为N(3 )的字符串,只用插入字符这种操作,问要使其变成回文字符串,最少需多少步的插入? #include #include #include using namespace std; #define MAX 5000 #define min( x, y ) ( x < y ? x : y ) int dp[2][MAX + 5]; //滚动数组 c原创 2013-02-18 14:04:35 · 254 阅读 · 0 评论 -
POJ 1836 Alignment
题目链接 题意:一个n (2 个人组成的队伍,给出每个人的身高 在[0.5, 2.5] 之间,现要使每个人都能看到左右至少一端的尽头,问至少需要去掉多少人? 思路:枚举剩下的队列中的最高的人的位置,在这一最高的人的左边必定是按身高递增排列的人,在它的右边则必定是按身高递减排列的人,故只需求一次LIS,一次LDS即可。#include #include #include using name原创 2013-02-16 13:06:39 · 276 阅读 · 0 评论 -
基于枚举的贪心
http://poj.org/problem?id=1042 有若干个岛屿,每个岛只和前一个岛有路径相连,路径的长度为 ti 个5 分钟的路程,且该路径是单向的,每个岛上都可以钓鱼,岛 i 初始的 5 分钟能钓到的鱼量为 di , 此后的鱼量以每 5 分钟 di 的速度减少,现在从第一个岛开始,问怎样选择停留的方式,才能使在 h 小时内钓到的鱼量最多? 思路一:动态规划 分组背包问题(详见背原创 2012-12-21 16:43:30 · 294 阅读 · 0 评论 -
POJ 1837 Balance
题目链接 题意:一个杠杆,有多个钩子,每个钩子可以挂多个砝码,现在给出钩子距离中心点的位置坐标以及各个砝码的重量,问在将所有砝码都用上的前提下,使这一杠杆平衡的方法有多少种? 思路:多重背包,dp[i][j]数组中存储的是到第 i 个砝码位置平衡度为 j 的方法有几种 #include #include #include using namespace std; ////砝码个数G原创 2013-02-14 15:41:47 · 244 阅读 · 0 评论 -
poj 1426 之解三 动态规划
题目链接 题意: 给定一个数 n (1 解题思路:dp[ i ] [ j ] 表示 数列 1,10,100,1000,10000,......的前 i 个数任意组合得到的和是否有模 n 是 j的数,若有,将此数中最小的存在dp[i][j]中。 #pragma warning (disable:4786) #include #include using nam原创 2013-02-07 20:51:13 · 255 阅读 · 0 评论 -
动态规划(dynamic programming)初探:01背包问题及其变形/完全背包问题
一、01背包问题及其变形 http://acm.hdu.edu.cn/showproblem.php?pid=2602 1.未经优化的动归算法: int volume[1002]; //体积 int value[1002]; //价值 int v; //volume of the bag int dp[1002][1002]; for(i=原创 2012-10-13 21:36:42 · 426 阅读 · 0 评论 -
分组背包
http://acm.hdu.edu.cn/showproblem.php?pid=1712 共n门课,m天,第 i 门课上 j 天得分为A [ i ][ j ],问在m天中怎样安排每门课的上课天数才能得到最高的分数? ①二维数组解决方案 #pragma warning (disable:4786) #include #include #include using namespac原创 2012-10-24 16:19:17 · 308 阅读 · 0 评论 -
DP经典题
http://poj.org/problem?id=1160 题意:有N个村庄,要在这N个村庄中建K个邮局,求如何布置这些邮局能使得所有村庄到离它最近的那个邮局的距离总和最小。 此题个人认为与最长递增子序列有一定的类似,我正是受了最长递增子序列解题方法的启发,才A出了此题,但貌似不能通过优化最长递增子序列的方法(nlgn)来优化它 ///////v个村庄,p个邮局,把邮局建在哪些村庄原创 2012-11-11 15:47:04 · 376 阅读 · 0 评论