转自https://blog.csdn.net/csyzcyj/article/details/9324057#comments
转侵删
资源问题1
—–机器分配问题
F[I,j]:=max(f[i-1,k]+w[i,j-k])资源问题2
——01背包问题
F[I,j]:=max(f[i-1,j-v]+w,f[i-1,j]);线性动态规划1
—–朴素最长非降子序列
F:=max{f[j]+1}剖分问题1
—–石子合并
F[i,j]:=min(f[i,k]+f[k+1,j]+sum[i,j]);剖分问题2
—–多边形剖分
F[I,j]:=min(f[i,k]+f[k,j]+a[k]*a[j]*a);剖分问题3
——乘积最大
f[i,j]:=max(f[k,j-1]*mult[k,i]);资源问题3
—–系统可靠性(完全背包)
F[i,j]:=max{f[i-1,j-c*k]*P[I,x]}贪心的动态规划1
—–快餐问题
F[i,j,k]:=max{f[i-1,j’,k’]+(T-(j-j’)*p1-(k-k’)*p2) div p3}贪心的动态规划2
—–过河 f=min{{f(i-k)} (not stone)
{f(i-k)}+1} (stone); +贪心压缩状态剖分问题4
—–多边形-讨论的动态规划
F[i,j]:=max{正正 f[I,k]*f[k+1,j];
负负 g[I,k]*f[k+1,j];
正负 g[I,k]*f[k+1,j];
负正 f[I,k]*g[k+1,j];} g为min树型动态规划1
—–加分二叉树 (从两侧到根结点模型)
F[I,j]:=max{f[I,k-1]*f[k+1,j]+c[k]}树型动态规划2
—–选课 (多叉树转二叉树,自顶向下模型)
F[I,j]表示以i为根节点选j门功课得到的最大学分
f[i,j]:=max{f[t.l,k]+f[t.r,j-k-1]+c}计数问题1
—–砝码称重
f[f[0]+1]=f[j]+k*w[j];
(1<=i<=n; 1<=j<=f[0]; 1<=k<=a;)递推天地1
——核电站问题
f[-1]:=1; f[0]:=1;
f:=2*f[i-1]-f[i-1-m]递推天地2
——数的划分
f[i,j]:=f[i-j,j]+f[i-1,j-1];最大子矩阵1
—–一最大01子矩阵
f[i,j]:=min(f[i-1,j],v[i,j-1],v[i-1,j-1])+1;
ans:=maxvalue(f);判定性问题1
—–能否被4整除
g[1,0]:=true; g[1,1]:=false; g[1,2]:=false; g[1,3]:=false;
g[i,j]:=g[i-1,k] and ((k+a[i,p]) mod 4 = j)判定性问题2
—–能否被k整除
f[I,j±n mod k]:=f[i-1,j]; -k<=j<=k; 1<=i<=n线型动态规划2
—–方块消除游戏
f[i,i-1,0]:=0
f[i,j,k]:=max{f[i,j-1,0]+sqr(len(j)+k),
f[i,p,k+len[j]]+f[p+1,j-1,0]}
ans:=f[1,m,0]线型动态规划3
—–最长公共子串,LCS问题
f[i,j]={0(i=0)&(j=0);
f[i-1,j-1]+1 (i>0,j>0,x=y[j]);
max{f[i,j-1]+f[i-1,j]}} (i>0,j>0,x<>y[j]);最大子矩阵2
—–最大带权01子矩阵O(n^2*m)
枚举行的起始,压缩进数列,求最大字段和,遇0则清零资源问题4
—–装箱问题(判定性01背包)
f[j]:=(f[j] or f[j-v]);数字三角形1
—–朴素の数字三角形
f[i,j]:=max(f[i+1,j]+a[I,j],f[i+1,j+1]+a[i,j]);数字三角形2
—–晴天小猪历险记之Hill
同一阶段上暴力动态规划
if[i,j]:=min(f[i,j-1],f[I,j+1],f[i-1,j],f[i-1,j-1])+a[i,j]双向动态规划1
数字三角形3
—–小胖办证
f[i,j]:=max(f[i-1,j]+a[i,j],f[i,j-1]+a[i,j],f[i,j+1]+a[i,j])数字三角形4
—–过河卒
//边界初始化
f[i,j]:=f[i-1,j]+f[i,j-1];数字三角形5
—–朴素的打砖块
f[i,j,k]:=max(f[i-1,j-k,p]+sum[i,k],f[i,j,k]);数字三角形6
—–优化的打砖块
f[I,j,k]:=max{g[i-1,j-k,k-1]+sum[I,k]}线性动态规划3
—–打鼹鼠’
f:=f[j]+1;(abs(x-x[j])+abs(y-y[j])<=t-t[j])树形动态规划3
—–贪吃的九头龙状态压缩动态规划1
—–炮兵阵地
Max(f[Q*(r+1)+k],g[j]+num[k])
If (map and plan[k]=0) and
((plan[P] or plan[q]) and plan[k]=0)递推天地3
—–情书抄写员
f:=f[i-1]+k*f[i-2]递推天地4
—–错位排列
f:=(i-1)(f[i-2]+f[i-1]);
f[n]:=n*f[n-1]+(-1)^(n-2);递推天地5
—–直线分平面最大区域数
f[n]:=f[n-1]+n
:=n*(n+1) div 2 + 1;递推天地6
—–折线分平面最大区域数
f[n]:=(n-1)(2*n-1)+2*n;递推天地7
—–封闭曲线分平面最大区域数
f[n]:=f[n-1]+2*(n-1)
:=sqr(n)-n+2;
38 递推天地8
—–凸多边形分三角形方法数
f[n]:=C(2*n-2,n-1) div n;
对于k边形
f[k]:=C(2*k-4,k-2) div (k-1); //(k>=3)
39 递推天地9
—–Catalan数列一般形式
1,1,2,5,14,42,132
f[n]:=C(2k,k) div (k+1);
40 递推天地10
—–彩灯布置
排列组合中的环形染色问题
f[n]:=f[n-1](m-2)+f[n-2](m-1); (f[1]:=m; f[2]:=m(m-1);
41 线性动态规划4
—–找数
线性扫描
sum:=f+g[j];
(if sum=Aim then getout; if sum