关于此题时空复杂度
查看原帖
关于此题时空复杂度
111172
Anoshag_Ruwan楼主2023/11/3 13:42

我的做法是这样的:对于 nn 以内的矩阵元素(规模为 log⁡2n\log^2n),将其升序排序后逐个加入矩阵,每次都做一遍状压 dpdp ,用 ansians_i 表示前 ii 个数更新时的答案.

对于状压 dpdp ,你的集合大小是 log3nlog_3n ,子集数是 O(nlog⁡32)=O(n0.63)O(n^{\log_32})=O(n^{0.63}), 如果暴力枚举子集,考虑到 kk 个元素中选取任意个不相邻元素的方案数是斐波那契数列 Fk+2F_{k+2},相当于 2×ϕk2 \times \phi^k,这里的规模是 O(nlog⁡3ϕ)=O(n0.44)O(n^{\log_3\phi})=O(n^{0.44}),可以用链表或其他方式处理出所有合法子集再暴力枚举,每一行可以达到 O(n0.88)O(n^{0.88}),总复杂度是O(n0.88log⁡3n)O(n^{0.88}\log^3n).

如果使用高维前缀和就比较好说,每一行是 O(n0.63log⁡n)O(n^{0.63}\log{n}),总复杂度是 O(n0.63log⁡4n)O(n^{0.63}\log^4n).均可通过本题,不过这样来看还是高维前缀和更优

2023/11/3 13:42
加载中...