二进制背包分组

二进制背包分组

具体地说就是令 \(A_{i,j}\left(j\in\left[0,\lfloor \log_2(k_i+1)\rfloor-1\right]\right)\) 分别表示由 \(2^{j}\) 个单个物品捆绑而成的大物品.特殊地,若 \(k_i+1\) 不是 \(2\) 的整数次幂,则需要在最后添加一个由 \(k_i-2^{\lfloor \log_2(k_i+1)\rfloor-1}\) 个单个物品捆绑而成的大物品用于补足.

显然,通过上述拆分方式,可以表示任意 \(\le k_i\) 个物品的等效选择方式

对于 \(0\)\(2^j\) ,从二进制表示的角度出发可以得出。

对于 \(2^j+1\)\(A_{i,j}\),由于 \(k_i-2^{\lfloor \log_2(k_i+1)\rfloor-1}\) 必然小于前几项 \(2\) 的整数次幂之和,故此时仍在表示范围之内。

posted @ 2026-01-02 23:12  Melting_Pot  阅读(12)  评论(0)    收藏  举报