我的做法是这样的:对于 n 以内的矩阵元素(规模为 log2n),将其升序排序后逐个加入矩阵,每次都做一遍状压 dp ,用 ansi 表示前 i 个数更新时的答案.
对于状压 dp ,你的集合大小是 log3n ,子集数是 O(nlog32)=O(n0.63), 如果暴力枚举子集,考虑到 k 个元素中选取任意个不相邻元素的方案数是斐波那契数列 Fk+2,相当于 2×ϕk,这里的规模是 O(nlog3ϕ)=O(n0.44),可以用链表或其他方式处理出所有合法子集再暴力枚举,每一行可以达到 O(n0.88),总复杂度是O(n0.88log3n).
如果使用高维前缀和就比较好说,每一行是 O(n0.63logn),总复杂度是 O(n0.63log4n).均可通过本题,不过这样来看还是高维前缀和更优