其实是day4
一、洛谷P1018 乘积最大
f[i][j]表示前i个数 切成j块 用f[i][j]而不用f[i][j][k](i到j切成k块)呢?
Luogu1043
前缀和(好算一段里的数的和)+一堆预处理
传进来一个指针(其实指针和数组名差不多,C++的玄学特性),然后处理这个数组
洛谷1063 能量项链
f[i][j]把i-j里的珠子合并起来的最大能量
枚举i<k<j的k:最后和i。j合并的珠子
有点像树形dp
洛谷1077 摆花
可以用前缀和优化
ij 第i种 第j盆,最大值
洛谷1103
树形DP:
luogu 1472 奶牛家谱
洛谷P1122 最大子段和
洛谷P2014 选课
(多个子树,从左到右合成)//为啥不多叉树转二叉呢?
状压DP:
位运算:(位运算竟然是我的最爱?)
Cpp的位运算,把数字化成二进制来算,略
与运算【&】或运算【|】非运算【!】异或【^】
乘以二运算【<<】除以二运算【>>】
玉米田(洛谷1879)
可以用行来划分状态,一次决定一行在哪里种草,用上一行决定这一行
由于每个地方种草1或不种草0,把一行看成一个数,每一个方格是一个位置
判断冲突用与运算 ,a&b==0,如果a&b不是0那就冲突
判断自身是否行不行:(a&(a<<1)==0&&a&(a>>1)==0)
互不侵犯luogu1896