随笔分类 - ACM_DP动态规划
摘要:题目描述 传说HMH大沙漠中有一个M*N迷宫,里面藏有许多宝物。某天,Dr.Kong找到了迷宫的地图,他发现迷宫内处处有宝物,最珍贵的宝物就藏在右下角,迷宫的进出口在左上角。当然,迷宫中的通路不是平坦的,到处都是陷阱。Dr.Kong决定让他的机器人卡多去探险。 但机器人卡多从左上角走到右下角时,只会
阅读全文
摘要:1050 循环数组最大子段和 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注 1050 循环数组最大子段和 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 1050 循环数组最大子段和 基准时间限制:1 秒 空间限制
阅读全文
摘要:1049 最大子段和 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 1049 最大子段和 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 1049 最大子段和 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难
阅读全文
摘要:Problem You are given an N x N matrix with 0 and 1 values. You can swap any two adjacent rows of the matrix. Your goal is to have all the 1 values in
阅读全文
摘要:输入: n=4 m=3 M=10000 输出: 4 (1+1+2=1+3=2+2=4) 复杂度(nm) 1 int n,m; 2 int a[MAX]; 3 4 int dp[MAX][MAX]; //数组 5 6 void solve() 7 { 8 dp[0][0]=1; 9 for(int i
阅读全文
摘要:输入: n=3 m=3 a={1,2,3} M=10000 输出: 6 (0+0+3,0+1+2,0+2+1,1+0+2,1+1+1,1+2+0) 为了不重复计数,同一种类的物品最好一次性处理好.于是我们按照如下方式进行定义. dp[i+1][j]=从前i种物品中取出j个的组合总数 复杂度:O(nm
阅读全文
摘要:输入: n=3 (w,v)={(3,4),(4,5),(2,3)} W=7 输出: 10(0号物品选1个,2号物品选2个) 和01背包的区别是物品可以任意选择. 令dp[i+1][j]=从前i种物品中挑选任意总重量不超过j时总价值的最大值.那么递推关系为: dp[0][j]=0 dp[i+1][j]
阅读全文
摘要:给定两个字符串S和T.求出这两个字符串最长的公共子序列的长度. 输入: n=4 m=4 s="abcd" t="becd" 输出: 3("bcd") 这类问题被称为最长公共子序列问题(LCS,Longest Common Subsequence)的著名问题. max(dp[i][j]+1,dp[i]
阅读全文
摘要:利用记忆化数组.记dp[i][j]为根据rec的定义,从第i个物品开始挑选总重小于j时,总价值的最大值. 递推式: dp[i][j]=0 (j<w[i]) dp[i][j] dp[i][j]= max(dp[i+1][j],dp[i+1][j-w[i]]+v[i]) 反向: 1 int dp[MAX
阅读全文
摘要:使用记忆化搜索,可大大提升时间效率.... 1 int n,W;//n为重量 2 int w[MAX],v[MAX]; 3 int dp[MAX][MAX]; 4 5 //从第i个物品开始挑选总重小于j的部分 6 int rec(int i,int j) 7 { 8 //记忆化搜索 9 /*if(d
阅读全文
摘要:有1元、5元、10元、50元、100元、500元的硬币各C1 C5 C10 C50 C100 C500 。现在要用这些硬币来支付A元,最少需要多少枚硬币? 优化使用面值大的硬币。 贪心法就是遵循某种规则,不断贪心地选取当前最优策略的算法设计方法. 搜索算法和动态规划算法是在多种策略中选取最优解,而贪
阅读全文
摘要:题目描述金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N 元钱就行”。今天一早金明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的N 元。于是,他把每件物品规定了一...
阅读全文
摘要:Problem Description小时候,因为家里经济困难,小明从未去过游乐场,所以直到现在,他还心存遗憾。最近,杭州刚建了一座游乐场,为了弥补儿时的遗憾,小明带了一笔钱迫不及待地要去体验一番。由于是第一次来到这种地方,小明也不知哪些项目比较好玩,因此他想体验尽可能多的项目。来之前,小明还向朋友...
阅读全文
摘要:题目链接:题意:把给定尺寸的长方体(数量不限)叠加在一起,叠加的条件是,上面一个长方体的长和宽比下面长方体的长和宽短,不能相等,长方体可以任意面朝下摆放,求这些长方体能叠加的最高的高度。把每个长方体分成3个元素。然后就和矩形嵌套差不多了,排序之后求容量最大的子序列。代码: 1 #include 2...
阅读全文
摘要:转载链接:http://www.cnblogs.com/PJQOOO/p/3897745.html第一步:先计算最长公共子序列的长度。实现第一步: 设一个C[i][j]: 保存Xi与Yj的LCS的长度。 设X = { x1~xm },Y = { y1~yn }及它们的最长子序列Z = { z1~z...
阅读全文
摘要:原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1024m为段,要深刻理解题意,并没有说是段与段要连接。题解链接:http://blog.csdn.net/a342374071/article/details/6701544 代码: 1 #include...
阅读全文
摘要:依赖背包 事实上,这是一种树形DP,其特点是每个父节点都需要对它的各个儿子的属性进行一次DP以求得自己的相关属性。fj打算去买一些东西,在那之前,他需要一些盒子去装他打算要买的不同的物品。每一个盒子有特定要装的东西(就是说如果他要买这些东西里的一个,他不得不先买一个盒子)。每一种物品都有自己的价值,...
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1712问题有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。这些物品被划分为若干组,每组中的物品互相冲突,最多选一件。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和...
阅读全文
摘要:二维费用的背包问题是指对于每件物品,具有两种不同的费用,选择这件物品必须同时付出这两种代价,对于每种代价都有一个可付出的最大值(背包容量),求选择物品可以得到最大的价值。设第i件物品所需的两种代价分别为v[i]和u[i],两种代价可付出的最大值(两种背包容量)分别为V和U,物品的价值为w[i]。分析...
阅读全文
摘要:Problem Description急!灾区的食物依然短缺!为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品,其价格不等,并且只能整袋购买。请问:你用有限的资金最多能采购多少公斤粮食呢?后记:人生是一个充满了变数...
阅读全文

浙公网安备 33010602011771号