![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
acm之DP
slmady
学习记录
展开
-
hdu1024(最大m子段和)
感觉这题很不错,思路如下,dp [ i ] [ j ]表示前j个数,分成i个字段所得到的最大字段和,其中包括j(为什么呢,自己举个例子就能理解了)。最终结果就是dp[ m ] [ n ],状态转移方程为dp [ i ] [ j ]=max ( dp[i ] [j-1 ], dp [ i-1 ] [ t ] ) ( 0 所以运用一维滚动数组,状态转移方程:用pre表示 i-1 行,dp表原创 2014-02-05 19:03:02 · 720 阅读 · 0 评论 -
hdu4826(三维DP)
题意:从左上角的点到右上角的点,在走的过程中只能走原创 2014-05-16 23:35:53 · 847 阅读 · 0 评论 -
hdu2844(多重背包)
虽说是模板题,但一开始用自己的方法写,还是wa了好多次原创 2014-05-26 14:57:20 · 481 阅读 · 0 评论 -
hdu3033(分组背包变形)
题意:n个物品,k个组,每个物品只能属于一个组,求至少每个组选一个物品实现的zuida原创 2014-05-26 17:17:34 · 512 阅读 · 0 评论 -
ACdream1092
这是队友给我的一道题:代码附在x原创 2014-05-27 00:02:00 · 534 阅读 · 0 评论 -
hdu4597(区间DP)
#include#include#include#include#include#include#include#include#include#include#include#include#define N 25#define inf 0x7fffffff#define eps 1e-9#define pi acos(-1.0)#define P system原创 2014-05-29 23:49:11 · 738 阅读 · 0 评论 -
hdu1011(背包树形DP)
没有完全理解这题,原创 2014-07-25 09:44:10 · 550 阅读 · 0 评论 -
hdu3538(概率dp求期望)
//题意:求从(1,1)点到(r,c)的期望//dp[i][j]表示从(i,j)到(r,c)的期望,状态转移为dp[i][j] = p1*dp[i][j] + p2*dp[i][j+1] + p3*dp[i+1][j] + 2//然后化简为dp[i][j] = (2.0 + dp[i][j+1]*p[i][j][1] + dp[i+1][j]*p[i][j][2])/(1 - p[i][j原创 2014-07-26 23:40:33 · 569 阅读 · 0 评论 -
hdu4870(高斯消元解概率DP)
这题真的是太为难我了,在接触这题之前,没学过概率dp,没学过高斯消元原创 2014-07-27 08:57:29 · 890 阅读 · 0 评论 -
hdu4336(概率DP+状态压缩)
题意:要收集n张卡片,得到每张kapia原创 2014-07-30 19:39:00 · 533 阅读 · 0 评论 -
hdu4901(区间DP)
题意:给定n个数,从中选k个数构成集合S、T(非空,并且S中的数对应的下标小于T中的数对应的下标),使得S的异或等与T的位与思路:区间DP,一开始读错题了,以为S和T中的数字下标要连续,所以wa了。后来自己写还是不会,请教大神之后才写出来的代码dp1[i][j]表示i为右边的界限(包含i),异或值为j的方案;dp2[i][j]表示以i为右边界,位与的值为j的方案;然后再对dp1[i][原创 2014-08-01 00:05:52 · 781 阅读 · 0 评论 -
hdu4968(选n个物品恰好装满的背包)
题意:从40个物品中选出n个,装到容量为V的背包里面,要求恰好装满得到的最大值和最小值思路分析:dp1[i][j]表示取i个物品装到容量为j的背包里面的最大价值,状态转移dp1[i][j] = max(dp1[i-1][j-cost]+value,dp1[i][j])。这里的初始化很关键,我初始化一个物品A放在容量为j的背包中的最大价值,同时要确保剩下的 n-1 个物品*60 的价值要小于原创 2014-08-21 10:58:46 · 897 阅读 · 0 评论 -
hdu4945(dp+组合数学)
题意:给一串数字,问有多少个序列能够组成2048思路分析:DP+组合数学,如果就一个DP就还好做,加上组合数学,那我就晕了。思路是参考大神的。dp[i][j]表示2^i选了j个有多少个序列,状态转移dp[i][j+k/2] += C(n,j)*dp[i-1][k]。还有组合数是怎么用的很关键,看代码吧。zhei还有一点要注意的是取模运算非常耗时,尽量少用取模运算,我用add来减少取原创 2014-08-29 10:26:33 · 743 阅读 · 0 评论 -
hdu4856(bfs + 状态压缩)
题意:一个n*n的网格,"#"表示障碍物,m个隧道,每个隧道都有个出口和入口,为走遍所有隧道的最短时间,一分钟走一个网格。绝对是到好题,N很少,一开始用bfs+dfs做,超时了,因为dfs时的时间复杂度是15!。解题思路:把模型转换一下就变成了,n个隧道,每个隧道之间的距离为c[i][j](这个是通过bfs求出来的),然后就用状态压缩DP解,dp[i][j]表示当前状态为i所在的隧道是原创 2014-09-03 20:05:43 · 706 阅读 · 0 评论 -
hdu4865(概率DP)
题意:已知前一天和今天的天气概率,某天的天气概率和叶子的潮湿程度的概率,n天叶子的湿度,求n天最有可能的天气情况。思路:概率DP,dp[i][j]表示第i天天气为j的概率,状态转移如下:dp[i][j] = max(dp[i][j, dp[i-1][k]*table2[k][j]*table1[j][col] )原创 2014-10-23 17:54:17 · 712 阅读 · 0 评论 -
zoj3689(贪心+DP)
题意:n个任务,剩余t的时间,完成每个任务会消耗时间ti,同时也会得到t*si的价值,求怎么安排任务得到的价值最大思路:先贪心,将n个任务按性价比排序,然后用DP,dp[i][j]表示完成前i个任务,用时j,实现的最大价值,dp[i][j] = max( dp[i][j],dp[i-1][j-ti] + (t-(j-ti))*s1 ),但是很明显这样会超内存,优化dp[j]表示用时t实现的最大原创 2014-11-13 19:12:26 · 721 阅读 · 0 评论 -
hdu4501(多维背包)
题意:多维背包思路:dp[i][j][k][o]表示前i件物品,花了j元,花了k个积分,拿了o个免费品的最优值,状态转移见代码。原创 2014-11-16 10:16:43 · 835 阅读 · 0 评论 -
zoj3822(概率DP)
题意:每次选一个格子,放一个球,一个球能控制它所在的行和列,求控制所有整个矩阵球的期望个数。思路分析:由于矩阵只有50*50 , 枚举球的个数即可,dp[i][j][k]表示用k个球,控制了i行和j列的概率,状态转移dp[i][j][k] = p1*dp[i-1][j][k-1] + p2*dp[i][j-1][k-1] + p3*dp[i-1][j-1][k-1] + p4*dp[i][j]原创 2014-10-18 23:10:16 · 508 阅读 · 0 评论 -
hdu1421(DP)
题意:n个物品,要搬走k对,原创 2014-07-18 23:58:36 · 436 阅读 · 0 评论 -
hunnu11461(简单DP)
这题时我们校赛的题目,我wa到死了 ,一直没ac,主要还是自己思路太乱了,原创 2014-06-08 22:25:14 · 483 阅读 · 0 评论 -
hdu1114(完全背包+恰好装满)
给定n个物品,每个物品可以随便取,求恰好装满时的最少价值,f[0]=0,f数组初始化为INT_MAX表示不存在讲背包装满的解状态转移方程:f[j]=min( f [ j ] , f[ j ] - w [ i ] + v [ i ] );代码如下:#include#include#include#include#include#include#include#inc原创 2014-02-04 22:10:35 · 733 阅读 · 0 评论 -
hdu1171(多重背包模板题)
最近重新开始学DP,今天做到多重背包这题,自己写了一个代码,感觉自己确实进步点了 ,嘻嘻。但是我没看清题意n下 面是自己写的代码:#include#include#include#include#include#include#include#include#include#include#include#define eps 1e-9#define N 100原创 2014-02-06 14:37:09 · 637 阅读 · 0 评论 -
hdu1087(求一个长上升子序列,使其和最大)
此题比较适合DP入门的人做一下。最近刚学记忆化搜索,所以用记忆化搜索写了一个,dp[ i ]表示从第i个元素出发得到最大的上升子序列的和,状态转移方程dp[ i ]=max( d p [ i ] ,dp[ j ] ) + a[ i ](j>i&&a[i]代码如下:#include#include#include#include#include#include#include原创 2014-02-05 22:18:21 · 638 阅读 · 0 评论 -
hdu1160(记录路径)
这题状态转移方程很容易找dp[ i ]=max( dp[ i ] , dp[ j ]+1 ) 0代码如下:#include#include#include#include#include#include#include#include#include#include#include#define N 10005#define eps 1e-9#define原创 2014-02-06 13:22:12 · 688 阅读 · 0 评论 -
hdu1069(记忆化搜索)
此题思路还是比较清晰的,对于每个x,y,z,都会有三种情况,dp[ i ]表示把第i个放在最下面得到的最大高度,状态转移方程为dp[i]=max( dp[i], dp[j]+height ) 这里的j要满足能够放在i上面,height为第i个矩形的高度代码如下:#include#include#include#include#include#include#inc原创 2014-02-04 16:26:23 · 596 阅读 · 0 评论 -
hdu1159(最长公共子序列,滚动数组)
状态转移方程为:dp[i][j]=dp[i-1][j-1]+1(s1[i]==s2[j]);dp[i][j]=max(dp[i-1][j],dp[i][j-1])(s1[i]!=s2[j])代码如下:#include#include#include#include#include#include#include#include#include#include#i原创 2014-02-05 22:41:46 · 1136 阅读 · 0 评论 -
hdu3555(数位DP)
这道题目真是把我给坑死了,用原创 2014-05-07 00:40:57 · 522 阅读 · 0 评论 -
hdu2089(数位DP)
这是我自接触DP以来,第三次学di原创 2014-05-06 17:04:58 · 441 阅读 · 0 评论 -
hdu1074(集合上的动态规划 状态压缩)
这是一道好题,是一道状态压缩DP有n门功课 ,共有1代码如下:#include#include#include#include#include#include#include#include#include#include#include#define eps 1e-9#define inf 10000000#define P system("pause")原创 2014-02-07 16:12:36 · 763 阅读 · 0 评论 -
hdu3652(数位DP)
做了n久才搞定,感觉自己的数位DP学的太不扎实了题意:求1原创 2014-05-10 15:33:03 · 492 阅读 · 0 评论 -
hdu4539(状态压缩)
小学数位DP之后又去学习状态压缩,这题对于一个入门者还是有点难度的原创 2014-05-15 18:32:59 · 623 阅读 · 0 评论 -
认识DP
动态规划的核心:状态和状态转移方程状态转移方程的计算方法:1、递推计算,关键是边界和计算顺序;2、记忆化搜索,所谓记忆化搜索就是搜索的形式+动态规划的思想,不必事前确定各状态的计算次序,但要记录每个状态是否被访问过。原创 2014-02-04 16:18:30 · 675 阅读 · 0 评论 -
hdu1565(状态压缩)
本人第一道ac的状态压缩dp,这题的数据非常水,很容易过题意:在n*n的矩阵中选数字原创 2014-05-19 22:49:09 · 714 阅读 · 0 评论 -
hdu3001(三进制状态压缩DP)
这题和TSP(旅行售货员问题)本质区别是每个地方可以访问两下,而TSP只能访问一次,一开始题目读错了,用搜索来做结果wa了后来看了解题,这个问题要用状态压缩来解原创 2014-05-22 00:23:56 · 641 阅读 · 0 评论 -
hdu2159(二维背包)
这是我的第一道二维背包题,没想到自己一下子就A了,但是代码写的比较乱,下面的代码是我有重新修改的状态转移:dp[i][j] = max()原创 2014-05-23 22:35:53 · 577 阅读 · 0 评论 -
poj2576(二维背包)
题意:n个人分成两组,两组人数只差小于1 ,原创 2014-05-24 10:26:31 · 506 阅读 · 0 评论 -
csu(背包的变形题)
这是一道背包的变形题目。题意:给n个怪物,m个人,每个人的魔法消耗和魔法伤害不同,求打死所有怪物所需的魔法#include#include#include#include#include#include//#include#include#include#include#include#include#include#define ll long lon原创 2014-05-23 22:15:43 · 475 阅读 · 0 评论 -
hdu4433(三维DP,后效性)
题意:给你个长度为n的数字串,每次最多旋转三个数字,至少经过都少部才能到达目标串。思路:一开始我也是用DP做的,但是没考虑到后效性,所以wa了。后来看了题解,思路是这样的dp[i][j][k]表示第i为匹配好,第i+1位增加了j,第i+2增加了k。状态转移:第i+2位增加k+x,第i+3位增加y,然后还要考虑到减的情况。原创 2014-11-06 08:34:13 · 1211 阅读 · 0 评论