数位dp:求区间【l,r】内有多少满足条件的数
- windy数
记忆化递归搜索+处理限制条件
前缀优化:solve(r)-solve(l-1);-->包括边界
限制条件之区间内:判断前面所有位数是否都为上界 limit&&(i==maxn) ?=1
限制条件之前导零:判断前面所有位数是否都为0 pre&&i==0
有依赖型背包
- 金明的预算
转化为树型DP,被依赖者设为依赖其者的父节点
f【u】【j】指:选了u 以及 u 的子树内的点的条件下,容量恰好为 j 的背包所能达到的最大总价值
对于每个节点:向下扩展再向上更新
枚举每个节点的子节点,满足扩展条件(选择该子节点)后对该子节点扩展,等到该子节点及其子树被计算完毕后,对该节点进行更新(01背包)
//*** 前置————>能选
for(int j=0;j<=n-w[v];j++) f[v][j]=f[u][j]+c[v];//要选子树,就必须选该节点(v)//用f[u][j]+:父节点可同时选多个子节点
LIS与LCS
nlogn:记录每种长度的结尾元素使这种长度的子序列的结尾元素尽可能小
LCS:两个序列的子序列,一定是A的子序列,
若A序列中若干元素按照B中位置下标单调递增,它就是B的子序列
标签:总结,背包,该子,条件,序列,节点,DP
From: https://www.cnblogs.com/blogzy/p/18007102