1 条题解
-
0
自动搬运
来自洛谷,原作者为

xuanxuan001
生活就像愤怒的小鸟,失败后总有几只猪在笑。搬运于
2025-08-24 23:13:51,当前版本为作者最后更新于2025-04-18 20:06:06,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
非常离谱的做法,复杂度似乎是大常数 ,理论上踩标了,现在是最优解第四,赛时因为预处理 只预处理到了 因此在 的时候在最开始记录总状态数的时候越界了,然后赛时以为是精度问题,遗憾离场,但过了应该也会以绝对的罚时优势稳居 rk6,所以也不影响排名。
考虑用三进制数存储决策,就按照题面中的字典序(
名字长度?没看出)分别对应 ,可以求出高适的决策概率分布 ,那么需要求的就是李白在所有决策上的胜率情况 。考虑 是一个什么样的变换。Rock Paper Scissors遵循了什么字典序发现双方决策分别为 时的胜负情况只和 与 在三进制的每一位上的差有关,对于每一位,差为 分别代表平、胜、负,发现这个差也可以当做是个三进制数 ,那么可以对于每个 计算这时李白是否获胜,并也记录成一个数组 ,所有胜的位置为 ,否则为 。
那么发现这其实是一个三进制上的不进位加法,设这样的不进位加法运算为 ,那么 的变换实际上就是 。我们知道在二进制中类似于这样的运算可以使用 FWT 或 FMT 快速求得,那么在三进制中是否存在类似算法呢?
其实我在几个月前就想过这个问题,但没有尝试去解决,这次模拟赛既然遇到了,就正好推一下。写这篇题解的时候搜了一下发现三进制 FWT 好像已经有了,但应该比较冷门,就无所谓了。
类似于 FWT,将每一位分开,并使用类似的变换,此时将问题变为了 的情况,不难发现只要 的变换正确将它类似于二进制下的 FWT 不断嵌套依然正确。
现在考虑此时的三元组 ,我们要找到一个合适的变换 ,其中 也是一个三元组,使得对于任意的对于任意的两个三元组 ,有
- 。
- 设 $c_x = \sum\limits_{i=0}^2\sum\limits_{j=0}^2 a_ib_j[i + j \equiv x (\bmod 3)]$,那么有
- 变换是一个三元组的映射,即存在 的逆运算 ,这条性质是由于在变换完成后需要用逆变换得到答案数组。
不难发现第一条性质等价于限制这个变换需要是一个线性变换,即需要找到一个矩阵 ,而变换 即为 ,第三条限制等于 存在逆矩阵,即 满秩,下面考虑第二条限制。
不难发现由于是线性变换,所以实际上只需要验证 的正确性即可。
发现 的三列实际上是比较独立的,设为 ,那么代入上面三个 可以发现它们应该满足 ,其中满足 。
众所周知 有三个,刚好放在 的三列即可,封装一个复数运算就行了,逆运算就手推一下这个方程,AC 记录。
本来以为这个做法会比官解更优拓展性,但官方做法也能求出 数组,所以也不好说。
- 1
信息
- ID
- 11713
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 6
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 上传者