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

Doqe
Doqe搬运于
2025-08-24 23:15:53,当前版本为作者最后更新于2025-05-11 19:16:42,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
我们采用分治法解决本题。
我们设计分治算法:计算下标在 的乘法。需要递归调用下标在 的乘法。
我们考虑边界情况。如果 足够小直接暴力。
如果 不足够小,按照最高位划分出 和 。
然后我们宣称已经会了 的算法,现在需要递归调用其。
因为是位运算,所以每一位的贡献独立,也就是 $[i\mathop{\mathrm{op}}j=k]=\prod_t[\text{op}_{v_3(i)_t,v_3(j)_t}=v_3(k)_t]$。
所以 的贡献可以被拆成每一位。同时这里题目定义的“卷积”
对于 或者 是线性的(双线性)。因此有乘法分配律 ,。
因为调用乘法,我们需要构造若干个 。
最后我们要求 ,需要可以用 加减表示。
在接下来的题目中,我们默认 是一个变量,这样 。但不影响推广。
关于时间复杂度分析:,当 的时候。
第零次
显然我们可以 全部都单独存放一遍,但是这样就需要递归 次,和暴力基本无区别。
第一次,我们尝试部分分
我们在 Subtask 3 枚举几个例子,发现可以将输入的两个数据压缩,形成异或操作。
比如下面这个可以压缩 为 (只存储 的和), 不变化。
第二次,我们推广异或
依据 OI wiki 的说明,我们可以推广异或运算。
二进制异或可以视作长度为 循环卷积。三进制同理。循环卷积使用 DFT 和 IDFT 实现。
第三次,我们发扬人类智慧
递归 次啥都干不了。我们尝试搞一个构造至少解决 。
这部分有原题 Tritwise Mex。
具体做法是,运算表形如:
我们容易观察到 可以解决掉 。
我么容易观察到 和 可以表示到 。
然后我们使用容斥原理,用总的 减去 得出 。
第四次
来点容斥思想,选择运算表内出现最多的数字 ,用 减去 来搓出 ,另外两个 同卷积表示法。
这样需要使用乘法次数会少, 次。
我们进一步发扬人类智慧。
来点乱搞,因为数据随机,所以大概率有 在同一行或者同一列的,这样随随便便就做到了 。
具体分析一下只有拉丁方会出事,而拉丁方运算表几乎等价于三进制异或。合并一下就做完了,但是要注意卡常。
这里是 95 分的代码,拼上拉丁方就可以过了。洛谷提交记录。
(代码比较色,并且会有好几份代码,所以这篇题解不放完整代码只放提交记录)
第五次,我们更充分地发扬人类智慧
以上做法太差了。
还是需要构造 使得答案 可以用 表示。
我们观察上文的构造,再次发扬一下人类智慧,直接猜测 有一组解,因为考虑 FMT 和 FWT,就已经覆盖了这个集合里的数。
至于最后的搓出,可以使用高斯消元解决(, 都是多项式,把系数拿出来当向量用)。
总共有 个参数, 看上去可能大于等于 (考虑 操作及其原题)。所以枚举量至少 往上,就爆了。
来点卡常,像 和 和 本质是一样的。进行一个去重。
去重后只剩下 个 。我们大胆猜测 。直接枚举,然后使用高斯消元判解和方案即可。
然后充满自信的交一发发现过了。作者在本地跑了运算表最后一位确定为 的所有表,都存在解。
跑得飞快,qoj 上能在 500ms 内出结果,对于本题的时限绰绰有余。
接下来的尝试就没有什么复杂度上的优化了。更多是佐证复杂度难以减小的原因。
第六次
人类智慧不够用了。我们寻求他人的人类智慧。
假设 ,,求 。这里我们定义 。
我们可以发现这是个张量分解道理。我们还知道张量分解在 等分解是 NP hard(有限域下应该是 NPC)的。
虽然如此,我们还知道存在迭代近似的做法。虽然不一定能够求解,但是在这里是足够的。
我们查找一个梯度下降法,搞一下,发现基本都能到达 。重复分解就有基本都通过了。
第七次?
如果希望进一步优化 是极为困难了,因为这会需要 。说明基本到头了。
这里有若干佐证:Tritwise Mex 做到了 ;三进制异或做到了 ,但是使用了单位根。
受到 NOIP T4 难度 的启发。写一些随即说话:
一份标准程序的 CP 分解部分使用了梯度下降法,但调高了学习率(变化幅度),并且若收敛速度过慢或不收敛(出现 inf 或 nan),重新运行直至找到一组解。
什么张量分解,到底是谁在会这种东西
但是 能过啊
综上所述,本题是不可多得的题,无需添加任何形容词。唯一的败笔在于当时不知道为什么时间开太大了。唯二的败笔在于数据不够发力。唯三的败笔在于没有及时找出来第五次的做法。
- 1
信息
- ID
- 12268
- 时间
- 3000ms
- 内存
- 1024MiB
- 难度
- 7
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者