• 【考试总结】20220730


    水晶

    异或和为 \(0\) 可以通过 \(n-1\) 个乱选,钦定一个抵消来实现。

    那么枚举这 \(n\) 个数字的 \(\rm LCP\),求 \(f_{i,0/1,0/1}\) 表示前 \(i\) 个数字有奇数/偶数个选择这位填 \(1\) 以及是否有一个选择这位低于上界 \(M_i\) 的。

    转移不再赘述。

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

    物品

    区间答案为 \(\displaystyle\prod_{i=1}^n (cnt_i+1)\)\(+1\) 表示不选,否则只能选一个

    分块。

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

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

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

    颜色

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

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

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

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

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

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

  • 相关阅读:
    中文和英文
    文件字符流
    Java IO File
    关于整数拆分的递归法与母函数法
    图论·Dijkstra·HDU2066
    图论·Floyd算法·HDU2544&1874 (伪)2066
    关于 图论·并查集·HDU1232&1856
    Power of Cryptography
    Y2K Accounting Bug
    整数划分
  • 原文地址:https://www.cnblogs.com/yspm/p/16535556.html
Copyright © 2020-2023  润新知