各种背包的dp刷题板
[p1332][NYOJ skiing] 滑雪 (dp+搜索)
[p1312] [vjios1448 路灯改建计划] 关灯问题 (背包预处理的分组背包)
f[i][j]表示给把前i个灯分为j组可以获得的最大照明度
g[i][j]表示第i盏灯到第j盏灯分为一组在满足前提条件下的最大照明度
在预处理g[i][j]的i循环内,
用一个d[x][y]数组先预处理出:
[i,x]内所有编号的灯总耗电量y时的最大照明度(y的上限显然为(n-i+1)*t)
然后g[i][j]=d[j][(j-i+1)*t]即可得到g.
预处理的时间复杂度为O(n^3*(t/2+1))
用一个d[x][y]数组先预处理出:
[i,x]内所有编号的灯总耗电量y时的最大照明度(y的上限显然为(n-i+1)*t)
然后g[i][j]=d[j][(j-i+1)*t]即可得到g.
预处理的时间复杂度为O(n^3*(t/2+1))
[p1310] 神仙开山 (多维01背包,通过进制表示状态)
[p1316] 积木游戏(背包)根据规则从后向前扫
g[ i ][ j ][ w ] 表示从i到j分为一组i的第w面向下时的最大高度
为了方便,应该将将每个积木的三边都按大小排序,这样只需要上下两面的大边分别相比/小边分别相比.
[p1316] 积木游戏(背包)根据规则从后向前扫