摘要:
bitset 简介 bitset 是 C++ 自带的一个STL。 bitset是一个01串,支持对01串上的每一位进行单点0/1修改,01串上的每一位占1bit, 一般用于在一些场合优化bool数组,或者拿来当桶。其本身的时间复杂度和空间复杂度都相当优秀。 原理 分STL自带和手写两种 其一: 将 阅读全文
摘要:
可删除堆 考虑到没什么人会选择手写普通的堆,所以用优先队列实现就好。 问题: 我们知道,在使用堆或优先队列的时候,我们只能取出堆顶,也就是所维护的最大或最小值。 那么如果我们要从所维护的一个元素里删除一个非最大或最小值呢? 最暴力的做法是将元素一个一个从堆顶弹出,直到弹出我们要删的元素,再将之前所弹 阅读全文
摘要:
二进制拆分 二进制拆分是对多重背包的一种优化方式,可以极大的优化多重背包的时间。 前置 我们回顾下完全背包问题。 背包容积为 \(C\) , 有 \(n\) 种物品 , 每种物品有 \(k[i]\) 个, 第 \(i\) 个物品占用 \(w[i]\) 的容积,价值为 \(v[i]\) 。问能用背包装 阅读全文