做题记录 25.8.31
QOJ #6331. Jewel Game
令 \(f_{s,a,b}\) 表示子集 \(s\) 中的 \(\text{jewel}\) 没有使用过,目前先手在 \(a\),后手在 \(b\),最大的分数,令 \(w_u\) 表示点 \(u\) 上的 \(jewel\) 的权值(不存在则为 \(0\)),令 \(id_c\) 为 \(c\) 点的 \(jewel\) 的 \(id\)(不存在则值为任意一个一定不在 \(s\) 中的值),显然转移为
\[f_{s,a,b}=\max_{(a,c)}(w_c-f_{s/\{id_c\},b,c})
\]
按 \(s\) 从大到小 \(dp\),\(s\) 相同的,重复迭代以上过程直到 \(f_s\) 不变,显然迭代次数不超过 \(O(n)\),因此时间复杂度 \(O(2^kn^2m)\)
存在 \(O(2^k n(n+m)\log n)\) 的算法

浙公网安备 33010602011771号