【考试总结】2022-05-24

奇怪的博弈

首先黑色白色棋子是独立的,所以局面 SG=SGBSGW,而 SGW 就是所有白色石子堆的大小异或和

由于每次只能取走数目最小的一堆中的石子,那么相对大小关系不会发生改变,也就是说没取完之前都只能取这堆石子

此时可以通过简单推导得到表达式,即 SGB=minpile[(min=max)(cntmin1mod2)]

枚举最小的堆中的石子个数,此时问题本质上是求一个多重集合的子集异或和为 t 的子集数量

使用线性基判定是不是能表示出来,如果可以那么对于不在线性基中的元素,每种 “是否在子集” 的分配方案都可以对应一个线性基中的分配方案

倒序枚举复杂度即 Θ(nlogW)

赛时的暴力 DP 写错模数是怎么回事呢?

奇怪的拆分

fn 表示本题中定义的集合形成的二叉树数量,考虑枚举左右儿子大小并忽略其位置可以得到下述方程

fn=1+12i=1n1(ni)fifni

使用 EGF 来补项化简可以得到:

2F=12F2+ex+12

解方程过后使用多项式开根即可

奇怪的植物

使用 AC 自动机维护所有文本串,由于 |ti|40 所以可以将每个点的 DP 写成矩阵的形式,套用倍增即可得到一个复杂度 Θ(nl3logn+ql2logn) 的做法

其实第一步的倍增中不必要每个元素都处理 1,2,log2dep 的所有转移矩阵,大可使用树状数组的思想每次消掉深度的 lowbit 来进行上跳,如果深度差较小了则每次找到二进制下最高位跳上去

那么让 log2lowbit(dep) 尽量小成了现在的目的,可以在根上方添加一系列虚点,即只改变深度,不含有任何信息

设最终的添加的点数为 L,初始 L=0,从小向大遍历每个二进制位 i,如果未确定 lowbit 的元素中深度加 L 的第 i 位的数量超过第 i1 的元素就让 LL+2i1 来让更多的元素 lowbit 尽量小即可

经过上述修改之后,使用 Θ(ni2i)=Θ(n) 发现预处理复杂度中的 log 消失了

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