T1 潜水员
和普通的01背包的不不同点在于,有两个状态需要转移:氧气量和氮气量
令 $f(u,v)$ 为拥有 $u$ 升氧气 $v$ 升氮气所需的最小气缸重量
想到 最小 二字,自然能想到用 $\min$ 去转移
其他的就和普通的背包相同了
$f(u,v)=\displaystyle\min_{i=1}^k(f(u-a_i,v-b_i)+c_i)$
T2 分组背包
裸的板子题
枚举背包编号,先确定背包限制大小,再选物品去更新
1 | for(int i = 1;i<=T;i++){ |
T3 小球
因为是一棵满二叉树,所以节点 $i$ 的左孩子是 $2i$ ,右孩子是 $2i+1$
设这棵树的高度为 $dep$
则所有的叶子节点的编号都在 $[2^{dep-1},2^{dep})$ 这个区间里面
模拟即可
1 | bool tree[2000000]; |