![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
文章平均质量分 77
caoxiaoran1202
这个作者很懒,什么都没留下…
展开
-
hdu2602
Dp接触不久,先从简单做起 01背包问题 参考网址:http://baike.baidu.com/view/1731915.htm #include #include #include #include #include using namespace std; int value[1100]; int volume[1100]; int q[1100]; int main() {原创 2013-07-19 14:02:36 · 327 阅读 · 0 评论 -
uva 437 (dag 最长路)
题意:给出n个长方形,每个长方形都有无数多个,问怎么排列能使高度最高,最高的高度是多少? 长方形三条边的任意一条都能作为高,所以一个长方形可产生三种长方形。 然后直接用dag最长路。 #include #include #include #include #include #include using namespace std; #define inf 111111111 i原创 2013-09-21 11:09:11 · 652 阅读 · 0 评论 -
hdu 4001 (动态规划)
题意:给n个长方形,共有3种类型。 类型为1的长方形必须放在其长宽都大于等于另一长方形的上面,类型为2的长方形必须放在其长宽都大于等于且面积小于另一长方形的上面,类型为3的长方形必须放在其长宽都大于另一长方形的上面。 放置关系只与长宽和类型有关,排序很关键,排序完成后,应该有一个长方形不可能放到排在它后面的长方形上面。 然后用两层for,记忆话搜索即可。 #include #inclu原创 2013-09-21 11:04:46 · 505 阅读 · 0 评论 -
hdu 4632 回文DP
题目大意:给定一个字符串,让你求这个字符串中有多少个回文子序列 如:abab 中a,b,a,b,aa,bb,aba,bab,一共8个回文子序列。 既然是DP的问题,当然还是找状态转移方程吧,本题的状态转移方程是: 如果s[i]!=s[j] dp[i][j]=(dp[i+1][j]+dp[i][j-1]-dp[i+1][j-1])%mod //注意因为公式中有减号存在,可能出现原创 2013-09-01 21:16:17 · 379 阅读 · 0 评论 -
hdu 4487 概率DP
只要求出状态转移方程题目就简单了; dp[i][j][k] 表示走i步到j位置最右边位置是k 所以很轻易就知道k>=j; s:不走概率 l向左走概率 r向右走概率 如果k==j; dp[i][j][k]=dp[i-1][j][k]*s+dp[i-1][j-1][k-1]*r+dp[i-1][j-1][k]*r; 如果k!=j; dp[i][j][k]=dp[i-1][j][k原创 2013-09-01 15:08:10 · 367 阅读 · 0 评论 -
BNU28000 Maxim and Restaurant
Description: Maxim has opened his own restaurant! The restaurant has got a huge table, the table's length isp meters. Maxim has got a dinner party tonight, n guests will come to him. Let's index t原创 2013-04-21 22:48:43 · 463 阅读 · 0 评论 -
hdu 4323 编辑距离(经典) 动态规划
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4323 题目大意:给出n个字符串s1[1-n];,再给出m个 字符串和编辑距离临界值s2[1-m],kk[1-m],依次求这m个字符串与n个字符串的编辑距离小于编辑距离临界值的个数。即:s2[i]与s1[1-n]的编辑距离小于kk[i]的个数 (1 注意:kk[i]的值较小,对于判断很有用,因为原创 2013-08-12 10:12:33 · 397 阅读 · 0 评论 -
poj 2182
简单DP #include #include #include #include #include #include #include #include #include #define MAX 150005 using namespace std; int a[MAX]; int dp[MAX][2]; int n; int DP() { int原创 2013-08-10 15:41:40 · 339 阅读 · 0 评论 -
hdu 2670
/* 根据贪心思想应先将s[i].b从大到小排序, dp[i][j]表示前i个取出j个 */ #include #include #include #include #include #include #include #include #include using namespace std; int dp[1100][1100]; int n,k; stru原创 2013-08-10 16:59:23 · 467 阅读 · 0 评论 -
hdu2191
#include #include #include #include #include using namespace std; int dp[1100]; int m,n; struct node { int p; int w; int num; }; node s[110]; //01背包 void zeroOne(int cost,int value) {原创 2013-07-19 14:15:23 · 330 阅读 · 0 评论 -
hdu ()
完全背包问题参考网址:http://baike.baidu.com/view/1946917.html #include #include #include #include #include using namespace std; int dp[10010]; int a[]={150,200,350}; int main() { int n,t,i,j; scanf("原创 2013-07-19 14:09:27 · 257 阅读 · 0 评论 -
整数划分模板
整数划分问题是算法中的一个经典命题之一,有关这个问题的讲述在讲解到递归时基本都将涉及。所谓整数划分,是指把一个正整数n写成如下形式: n=m1+m2+...+mi; (其中mi为正整数,并且1 如果{m1,m2,...,mi}中的最大值不超过m,即max(m1,m2,...,mi) 例如但n=4时,他有5个划分,{4},{3,1},{2,2},{2原创 2013-09-21 15:02:30 · 557 阅读 · 0 评论