![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
bitset优化
Frozen_Guardian
已退役菜鸡Acmer
展开
-
CodeForces - 577B Modulo Sum(dp+bitset优化)
题目链接:点击查看题目大意:给出一个长度为 n 的数列,现在问能否选出一个子序列,满足其累加之和可以整除 m题目分析:可以当做背包去思考,dpi,jdp_{i,j}dpi,j代表的是选了前 i 个数后是否可以组合出累加之和对 m 取余等于 j 的数,那么答案显然就是看一下 dpn,mdp_{n,m}dpn,m 是否为 1 即可不过时空复杂度都是 n * m 级别的,因为是 01 背包,所以可以将空间复杂度优化掉一维,到此为止分支出了两种做法:因为 dp 数组只有 0 或 1 两种状态,所以不难想原创 2020-12-18 16:05:42 · 1257 阅读 · 2 评论 -
牛客多校2 - Greater and Greater(bitset优化暴力)
题目链接:点击查看题目大意:给出一个长度为 n 的数组 a ,再给出一个长度最大为 m 的数组 b,现在问在 a 中所有长度为 m 的子数组中,有多少个子数组满足每个相应的元素都大于数组 b题目分析:很显然的一个暴力时间复杂度是 n * m 级别的,高达 6e9 ,但是除以 32 后,时间复杂度好像就在可行范围内了,所以需要利用 bitset 优化一下参考博客:https://www.cnblogs.com/whitelily/p/13311327.html首先对于数组 b 的每个元素维护一原创 2020-07-16 01:49:34 · 316 阅读 · 0 评论 -
牛客 - Strange Bulbs(bitset优化拓扑)
题目链接:点击查看题目大意:给出一张 n 个点和 m 条边组成的有向无环图,每个节点都有一个开关和一个灯泡,初始时节点 1 的灯泡是亮的,每次操作开关可以将当前灯泡的状态置反,且会对子节点的开关产生连锁反应,问至少需要操作多少次才能将所有的灯泡关上题目分析:看到有向无环图首先想到拓扑,但是如果暴力拓扑转移每个点的状态的话,时间复杂度是 n * n 级别的,必定会超时,但是看到数据范围其实有经验的同学就会想到利用 bitset 优化了,可以优化掉 64 层的时空复杂度,经过优化后的时空复杂度就可以暴力原创 2020-06-17 00:49:19 · 291 阅读 · 3 评论 -
牛客 - Prize(bitset优化暴力)
题目链接:点击查看题目大意:给出一个长度为 n 的模式串 s ,再给出一个长度为 m 的匹配串,匹配串的每一位的可行数字都会给出,现在问最多可以匹配多少个字符串题目分析:模式串和匹配串的匹配,AC自动机的经典问题,但是在这个题目中匹配串的个数过于多,所以并不能这样做,因为匹配串的长度比较短,所以可以预处理出一个可行数组用来记录哪个位置可以放置哪个数字,这样就能将时间复杂度优化为 n * m 暴力贪心匹配了,但是看数据范围可知,n 为 2e6 , m 为 800 ,显然出题人是有意卡掉这样的暴力匹配原创 2020-06-16 23:38:41 · 321 阅读 · 0 评论