![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
DP
小黑妹
穷则独善其身,达则兼济天下!
展开
-
poj 1080 一道经典的dp题
题目大意是:给定两组DNA序列,要你求出它们的最大相似度每个字母与其他字母或自身和空格对应都有一个打分,求在这两个字符串中插入空格,让这两个字符串的匹配分数最大解题思路,模仿动态规划里面经典的求最长公共子序列的方法dp[i][j]表示字符串s1 1-i的和字符串序列s2 1-j的最长公共子序列的长度当s1[i] == s2[j] 时dp[i][j] = dp[i-1][j-1] +转载 2012-07-13 10:49:58 · 606 阅读 · 0 评论 -
hdu 1114 Piggy-Bank
完全背包这个问题非常类似于01背包问题,所不同的是每种物品有无限件。也就是从每种物品的角度考虑,与它相关的策略已并非取或不取两种,而是有取0件、取1件、取2件……等很多种。如果仍然按照解01背包时的思路,令f[i][v]表示前i种物品恰放入一个容量为v的背包的最大权值。仍然可以按照每种物品不同的策略写出状态转移方程,像这样:f[i][v]=max{f[i-1][v-k*c[i]]+k*w[原创 2012-09-20 19:46:22 · 1006 阅读 · 0 评论 -
poj3628 Bookshelf 2(0/背包)
题意:就是给出n和b,然后给出n个数,用这n个数中的某些,求出一个和,这个和是>=b的最小值,输出最小值与b的差。分析:这道题很简单,是很明显的01背包问题,这里的n个物品,每个物品的重量为c[i],价值为w[i]并且c[i]==w[i],,容量为所有c[i]的和sum。只要在f[]中从头开始找,找到一个最小>=b的就是题目要的解 DescriptionFarmer J原创 2012-09-23 11:07:35 · 2181 阅读 · 0 评论 -
Bone Collector
Many years ago , in Teddy’s hometown there was a man who was called “Bone Collector”. This man like to collect varies of bones , such as dog’s , cow’s , also he went to the grave …The bone collect原创 2012-09-19 11:07:46 · 563 阅读 · 0 评论 -
新年趣事之打牌----VIJOS_1071----01背包加强版
题目地址:http://www.vijos.org/Problem_show.asp?id=1071Fromxiaomengxian新年趣事之打牌 新年趣事 系列 描述 Description原创 2012-09-23 18:13:16 · 1727 阅读 · 0 评论 -
hdu 1117 Big Event in HDU(多重背包)
这题目和完全背包问题很类似。基本的方程只需将完全背包问题的方程略微一改即可,因为对于第i种物品有n[i]+1种策略:取0件,取1件……取n[i]件。令f[i][v]表示前i种物品恰放入一个容量为v的背包的最大权值,则有状态转移方程:f[i][v]=max{f[i-1][v-k*c[i]]+k*w[i]|0 DescriptionNowadays, we all know原创 2012-09-20 19:59:31 · 984 阅读 · 0 评论 -
hdu 1561树形dp+分组背包
/*HDU 1561 The more, The Better树形DP + 分组背包建立一颗数,选了子节点,必选父亲结点。对于每个结点,它的子结点就是个分组背包*/#include#include#includestring.h>#includeusing namespace std;const int MAXN=220;struct Node{ int to;原创 2012-09-19 10:12:06 · 548 阅读 · 0 评论 -
hdu2844(0/1背包+二进制转化)
如果直接按多重背包做会超时,所以要用二进制优化。模型:有N种物品和一个容量为V的背包。第i种物品最多有n[i]件可用,每件费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不跨越背包涵量,且价值总和最大。办法:根蒂根基算法这题目和完全背包题目很类似。根蒂根基的方程只需将完全背包题目的方程略微一改即可,因为对于第i种物品有原创 2012-09-24 16:19:52 · 2325 阅读 · 0 评论 -
poj1014 dividing(多重背包+二进制优化)
看到这个题我真是感慨万千,无数tlm,经过二进制优化后,居然来了个pe,原因是当cnt%2==1没有输出一个换行符。看来人品是太好了!题目: 有1,2,3,4,5,6六种硬币,输入它们分别得个数,把这些硬币分成两半看是否能实现。 首先cnt%2==1,肯定是不能平分的。 用hdu coin那道题目一样,都是用多重背包+二进制转化的思想。具体参照上篇博客。Descri原创 2012-09-24 17:00:29 · 668 阅读 · 0 评论 -
hdu 1203 I NEED A OFFER!(0/1背包)
继续0/1背包。只是需要小小的转化一下,因为他求的是至少被录取的最大概率。dp[j]=max(dp[j],1-(1-dp[j-m[i]])*(1-r[i]));DescriptionSpeakless很早就想出国,现在他已经考完了所有需要的考试,准备了所有要准备的材料,于是,便需要去申请学校了。要申请国外的任何大学,你都要交纳一定的申请费用,这可是很惊人的。Speakless没有多原创 2012-09-20 19:52:51 · 574 阅读 · 0 评论 -
acm-楼层扔鸡蛋问题
Time Limit:1000MS Memory Limit:65536KDescription Gardon有一些鸡蛋,他现在想知道这些鸡蛋的硬度。Gardon的家住在一座很高很高的大楼里,他现在要在这座大楼上测试鸡蛋的硬度。每个鸡蛋的硬度相同,鸡蛋的硬度定义为:如果鸡蛋从第m层上掉下来没有破裂,而从第m+1层上掉下来就破裂了,那么这个鸡蛋的硬度就是m。某个鸡蛋如果在实验中破裂了就永远的转载 2012-09-21 16:05:05 · 795 阅读 · 0 评论 -
poj 1837Balance
题目意思:有一个天枰,有C个挂钩和G个钩码,把所有的钩码挂在天枰的钩子上使天枰平衡的方案数。输入:2 4 //输入C,G-2 3 //挂钩的位置,一以0为对称点3 4 5 8 //钩码的重量 输出:使天枰平衡的方案数。 解析: a[i][j]表示为挂上第i个钩码的平衡度为j,j=7500时表示平衡。 假设 dp[i-1][j] 的值已知,设原创 2012-07-14 16:55:19 · 349 阅读 · 0 评论 -
poj 1276 Cash Machine
这是一个简单的dp题,用给定数量和面值的钱去换尽量接近所给的钱的大小。第一次是用三重循环来做AC了感觉效率不是很高,10448082hellobabygogo1276Accepted640K516MSC++595B2012-07-14 17:48:59代码:#includeu原创 2012-07-14 20:18:51 · 455 阅读 · 0 评论 -
poj 1159Palindrome
回家两天,这是今天的第一道DP题,题目意思很简单,题目有个简便方法就是设原字符串是S1,该字符串的逆序是S2,用长度减去S1,S2的最长公共子序列就得到最少需要补充的字符数。注意本题目的空间比较大,小心超时,数组不要开天大。 代码:#include#include #include using namespace std;char s1[5001],s2[5001]原创 2012-07-21 09:00:08 · 414 阅读 · 0 评论 -
hdu 2955 Robberies DP
这是一道背包题,需要转化一下。这个小偷想偷银行的钱,给你被抓的最大概率,和N家银行。下面N行代表的是这家银行都多少钱,和被抓的最大概率。有这时候我们关键的是怎么写出动态方程出来: 我们学习的10背包是两种方面构成的,一是背包的最大体积,二是装入背包物品的价值和体积。我们来模拟这个过程,首先:将全部银行的钱当做背包的最大体积那么每家银行的钱则当做物品的体积那么被抓的概原创 2012-08-28 10:42:41 · 1704 阅读 · 2 评论 -
poj 1742coins(优化的多重背包)
DescriptionPeople in Silverland use coins.They have coins of value A1,A2,A3...An Silverland dollar.One day Tony opened his money-box and found there were some coins.He decided to buy a very nice原创 2012-10-06 18:03:02 · 3211 阅读 · 1 评论 -
hdu 2191
悼念512汶川大地震遇难同胞——珍惜现在,感恩生活Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7664 Accepted Submission(s): 3175Problem Description急!灾区的食原创 2012-09-18 21:36:32 · 723 阅读 · 0 评论 -
hdu 2159 FATE(多重背包)
二维费用的背包问题是指:对于每件物品,具有两种不同的费用;选择这件物品必须同时付出这两种代价;对于每种代价都有 一个可付出的最大值(背包容量)。问怎样选择物品可以得到最大的价值。设这两种代价分别为代价1和代价2,第i件物品所需的两种代价分别为a[i]和 b[i]。两种代价可付出的最大值(两种背包容量)分别为V和U。物品的价值为w[i]。费用加了一维,只需状态也加一维即可。设f[i][v原创 2012-09-21 11:04:22 · 619 阅读 · 0 评论 -
hdu 2602Bone Collector(0/1背包)
DescriptionMany years ago , in Teddy’s hometown there was a man who was called “Bone Collector”. This man like to collect varies of bones , such as dog’s , cow’s , also he went to the grave …T原创 2012-09-20 19:38:05 · 839 阅读 · 0 评论 -
HDU 1001 Starship Troopers(树形DP)
题意: 给你一个树形山洞,n个房间,m个助手,进口是1,每个房间里面有必然命量的怪,每个手下可以干掉20个怪, 只要干掉该房间里面所有的怪才干获得该房间的经验值,问你如何分派手下能获得最大经验值。解析: 树形DFS,定义f[i][j]默示以 i 节点为根的树分派 j 个手下获得的最大经验值。DescriptionYou, the leader of Sta原创 2012-09-24 18:37:43 · 789 阅读 · 0 评论