动态规划
yc5_yc
这个作者很懒,什么都没留下…
展开
-
DP算法入门(1)——多重背包问题(POJ1276题解)
今天照着崔老师的背包问题九讲学习了多重背包问题,收获很大。在背包问题九讲中,崔老师共给出了三种完全背包问题的解法,我折中选择了中间的那种,即“转化为01背包问题”的解法,背包问题九讲上介绍的非常好,很容易理解,在这里不多说,可遗憾的是文章中没有给出一个完整的代码,在这里贴出,输入输出格式以POJ1276为准:#include #include #include using names原创 2012-05-07 21:17:13 · 1347 阅读 · 0 评论 -
DP算法入门(2)——完全背包问题(POJ2063题解)
昨天阅读了完全背包问题,顺便做了点题。完全背包问题超简单,尤其是O(VN)的算法,很容易就能懂,把01背包的第二重循环倒过来即可。2063这题就是按年走,每年根据当前的余额使用完全背包算出最大获利加到余额上,没什么可说的,注意都要除以1000,memset慎用,附属代码:#include #include #include using namespace std;const原创 2012-05-10 20:49:56 · 591 阅读 · 0 评论 -
DP算法入门(3)——最大子段和
令b[j]表示以位置 j 为终点的所有子区间中和最大的一个子问题:如j为终点的最大子区间包含了位置j-1,则以j-1为终点的最大子区间必然包括在其中如果b[j-1] >0, 那么显然b[j] = b[j-1] + a[j],用之前最大的一个加上a[j]即可,因为a[j]必须包含如果b[j-1]int max = 0;int b[n+1];int start = 0;int end =转载 2012-05-12 21:40:06 · 353 阅读 · 0 评论 -
矩阵模版(例题3070、3744)
struct matrix { double A[NMax][NMax]; matrix operator*(const matrix & m) { matrix ret={0,0,0,0}; for(int i=0;i<NMax;i++) for(int k=0;k<NMax;k++)原创 2012-05-30 21:36:22 · 335 阅读 · 0 评论 -
矩阵乘法模板二(递归 例题3613)
____ DFS(int a){ ____ ret1; if(a==1) return G2; ret1=DFS(a/2); ret1=Cheng(ret1,ret1); if(a%2)ret1=Cheng(ret1,G2); return ret1;}注:____是矩阵结构体的类型,Cheng代表两个矩阵相乘返回的值,DFS原创 2012-06-01 20:54:08 · 1417 阅读 · 0 评论