11 2023 档案
摘要:bitset 简介 bitset 是 C++ 自带的一个STL。 bitset是一个01串,支持对01串上的每一位进行单点0/1修改,01串上的每一位占1bit, 一般用于在一些场合优化bool数组,或者拿来当桶。其本身的时间复杂度和空间复杂度都相当优秀。 原理 分STL自带和手写两种 其一: 将
阅读全文
摘要:可删除堆 考虑到没什么人会选择手写普通的堆,所以用优先队列实现就好。 问题: 我们知道,在使用堆或优先队列的时候,我们只能取出堆顶,也就是所维护的最大或最小值。 那么如果我们要从所维护的一个元素里删除一个非最大或最小值呢? 最暴力的做法是将元素一个一个从堆顶弹出,直到弹出我们要删的元素,再将之前所弹
阅读全文
摘要:二进制拆分 二进制拆分是对多重背包的一种优化方式,可以极大的优化多重背包的时间。 前置 我们回顾下完全背包问题。 背包容积为 , 有 种物品 , 每种物品有 个, 第 个物品占用 的容积,价值为 。问能用背包装
阅读全文
摘要:day1 上午: T1: 最基础的暴力模拟,也可以贪心直接求,考场上不知道哪里写挂了。 T2: 题目要求按照拓扑的方式遍历图,分别考最优和最劣两种情况。 最优情况只需要每次贪心的走队列中最小的点即可,可用堆(直接将原本拓扑用的队列换成优先队列)实现。 最劣情况考场上想的是每次贪心地走队列中最大的点,
阅读全文