动态规划常见问题所涉及的公式(转载)

时间:2021-01-30 18:40:02
-----机器分配问题 
F[I,j]:=max(f[i-1,k]+w[i,j-k]) 


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


3. 线性动态规划1 
-----朴素最长非降子序列 
F[i]:=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[i]); 


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


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


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


9. 线型动态规划3 
-----最长公共子串,LCS问题 
f[i,j]={0 (i=0)&(j=0); 
f[i-1,j-1]+1 (i>0,j>0,x[i]=y[j]); 
max{f[i,j-1]+f[i-1,j]}} (i>0,j>0,x[i]<>y[j]); 
10. 资源问题4 
-----装箱问题(判定性01背包) 
f[j]:=(f[j] or f[j-v[i]]); 




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


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


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


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


15 线性动态规划5 
-----隐形的翅膀 
min:=min{abs(w[i]/w[j]-gold)}; 
if w[i]/w[j]<gold then inc(i) else inc(j); 


16 最短路1 
-----Floyd 
f[i,j]:=max(f[i,j],f[i,k]+f[k,j]); 
ans[q[i,j,k]]:=ans[q[i,j,k]]+s[i,q[i,j,k]]*s[q[i,j,k],j]/s[i,j]; 


17 线性动态规划 
------合唱队形 
两次F[i]:=max{f[j]+1}+枚举*结点 






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[i]]+w[i],f[i-1,j]); 


3. 线性动态规划1 
-----朴素最长非降子序列 
F[i]:=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[i]); 


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


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


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


9. 线型动态规划3 
-----最长公共子串,LCS问题 
f[i,j]={0 (i=0)&(j=0); 
f[i-1,j-1]+1 (i>0,j>0,x[i]=y[j]); 
max{f[i,j-1]+f[i-1,j]}} (i>0,j>0,x[i]<>y[j]); 
10. 资源问题4 
-----装箱问题(判定性01背包) 
f[j]:=(f[j] or f[j-v[i]]); 




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


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


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


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


15 线性动态规划5 
-----隐形的翅膀 
min:=min{abs(w[i]/w[j]-gold)}; 
if w[i]/w[j]<gold then inc(i) else inc(j); 


16 最短路1 
-----Floyd 
f[i,j]:=max(f[i,j],f[i,k]+f[k,j]); 
ans[q[i,j,k]]:=ans[q[i,j,k]]+s[i,q[i,j,k]]*s[q[i,j,k],j]/s[i,j]; 


17 线性动态规划 
------合唱队形 
两次F[i]:=max{f[j]+1}+枚举*结点