DP方程100个

转自https://blog.csdn.net/csyzcyj/article/details/9324057#comments

转侵删

  1. 资源问题1
    —–机器分配问题
    F[I,j]:=max(f[i-1,k]+w[i,j-k])

  2. 资源问题2
    ——01背包问题
    F[I,j]:=max(f[i-1,j-v]+w,f[i-1,j]);

  3. 线性动态规划1
    —–朴素最长非降子序列
    F:=max{f[j]+1}

  4. 剖分问题1
    —–石子合并
    F[i,j]:=min(f[i,k]+f[k+1,j]+sum[i,j]);

  5. 剖分问题2
    —–多边形剖分
    F[I,j]:=min(f[i,k]+f[k,j]+a[k]*a[j]*a);

  6. 剖分问题3
    ——乘积最大
    f[i,j]:=max(f[k,j-1]*mult[k,i]);

  7. 资源问题3
    —–系统可靠性(完全背包)
    F[i,j]:=max{f[i-1,j-c*k]*P[I,x]}

  8. 贪心的动态规划1
    —–快餐问题
    F[i,j,k]:=max{f[i-1,j’,k’]+(T-(j-j’)*p1-(k-k’)*p2) div p3}

  9. 贪心的动态规划2
    —–过河 f=min{{f(i-k)} (not stone)
    {f(i-k)}+1} (stone); +贪心压缩状态

  10. 剖分问题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

  11. 树型动态规划1
    —–加分二叉树 (从两侧到根结点模型)
    F[I,j]:=max{f[I,k-1]*f[k+1,j]+c[k]}

  12. 树型动态规划2
    —–选课 (多叉树转二叉树,自顶向下模型)
    F[I,j]表示以i为根节点选j门功课得到的最大学分
    f[i,j]:=max{f[t.l,k]+f[t.r,j-k-1]+c}

  13. 计数问题1
    —–砝码称重
    f[f[0]+1]=f[j]+k*w[j];
    (1<=i<=n; 1<=j<=f[0]; 1<=k<=a;)

  14. 递推天地1
    ——核电站问题
    f[-1]:=1; f[0]:=1;
    f:=2*f[i-1]-f[i-1-m]

  15. 递推天地2
    ——数的划分
    f[i,j]:=f[i-j,j]+f[i-1,j-1];

  16. 最大子矩阵1
    —–一最大01子矩阵
    f[i,j]:=min(f[i-1,j],v[i,j-1],v[i-1,j-1])+1;
    ans:=maxvalue(f);

  17. 判定性问题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)

  18. 判定性问题2
    —–能否被k整除
    f[I,j±n mod k]:=f[i-1,j]; -k<=j<=k; 1<=i<=n

  19. 线型动态规划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]

  20. 线型动态规划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]);

  21. 最大子矩阵2
    —–最大带权01子矩阵O(n^2*m)
    枚举行的起始,压缩进数列,求最大字段和,遇0则清零

  22. 资源问题4
    —–装箱问题(判定性01背包)
    f[j]:=(f[j] or f[j-v]);

  23. 数字三角形1
    —–朴素の数字三角形
    f[i,j]:=max(f[i+1,j]+a[I,j],f[i+1,j+1]+a[i,j]);

  24. 数字三角形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]

  25. 双向动态规划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])

  26. 数字三角形4
    —–过河卒
    //边界初始化
    f[i,j]:=f[i-1,j]+f[i,j-1];

  27. 数字三角形5
    —–朴素的打砖块
    f[i,j,k]:=max(f[i-1,j-k,p]+sum[i,k],f[i,j,k]);

  28. 数字三角形6
    —–优化的打砖块
    f[I,j,k]:=max{g[i-1,j-k,k-1]+sum[I,k]}

  29. 线性动态规划3
    —–打鼹鼠’
    f:=f[j]+1;(abs(x-x[j])+abs(y-y[j])<=t-t[j])

  30. 树形动态规划3
    —–贪吃的九头龙

  31. 状态压缩动态规划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)

  32. 递推天地3
    —–情书抄写员
    f:=f[i-1]+k*f[i-2]

  33. 递推天地4
    —–错位排列
    f:=(i-1)(f[i-2]+f[i-1]);
    f[n]:=n*f[n-1]+(-1)^(n-2);

  34. 递推天地5
    —–直线分平面最大区域数
    f[n]:=f[n-1]+n
    :=n*(n+1) div 2 + 1;

  35. 递推天地6
    —–折线分平面最大区域数
    f[n]:=(n-1)(2*n-1)+2*n;

  36. 递推天地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

猜你喜欢

转载自blog.csdn.net/floatiy/article/details/80538712