【考试总结】2022-07-30

水晶

异或和为 0 可以通过 n1 个乱选,钦定一个抵消来实现。

那么枚举这 n 个数字的 LCP,求 fi,0/1,0/1 表示前 i 个数字有奇数/偶数个选择这位填 1 以及是否有一个选择这位低于上界 Mi 的。

转移不再赘述。

根据是含义处理边界,例如 n 个数字有奇数个当前位是 1 那么停止枚举 LCP

物品

区间答案为 i=1n(cnti+1)+1 表示不选,否则只能选一个

分块。

预处理每个块的左端点开都得后缀每个 ai 都出现了多少次,在 Θ(nn) 的空间复杂度下可以做到 Θ(1) 求一段块中任意元素出现次数

预处理每个块左端点到它开头的后缀的每个前缀的答案,时空复杂度都是 Θ(nn)

对于区间长度小于根号者暴力,否则先继承询问右端点到询问左端点所在块后面一个的答案,并且把指针从块尾挪到 L 时动态维护答案即可。

颜色

重量为 0 的物品提前选上。特判一些边界,比如 L 大于同号 ai 的和

尝试构造一个选出物品数量最多且总重量 L 的解:

预选所有重量为负的物品,之后每个正 i 可以加入,给数量加一,重量 +i。为负的元素可以给数量减一,给重量加 i。贪心使得增量最大,减量最小。于是先从 1n 加入,删除则按照 n1 的顺序

注意这个过程要达到的目的是 数量最大

当限制变成 =L 时需要进行一些调整。可以发现对于贪心策略得到的选值方案而言,等于 L 的方案和它在重量上差距在 [m,m] 之间,否则可以通过添加元素来减少这个差量

于是调整的物品数量是 Θ(m) 级别的,将背包上界卡到 m2 ,选中的元素可以退下,价值 1 ,重量是 w,没选中的可以选中,价值重量为 (1,w) 。二进制分组优化即可

posted @   没学完四大礼包不改名  阅读(66)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示