做题记录 25.8.31

· · 个人记录

QOJ #6331. Jewel Game

f_{s,a,b} 表示子集 s 中的 \text{jewel} 没有使用过,目前先手在 a,后手在 b,最大的分数,令 w_u 表示点 u 上的 jewel 的权值(不存在则为 0),令 id_cc 点的 jewelid(不存在则值为任意一个一定不在 s 中的值),显然转移为

f_{s,a,b}=\max_{(a,c)}(w_c-f_{s/\{id_c\},b,c})

s 从大到小 dps 相同的,重复迭代以上过程直到 f_s 不变,显然迭代次数不超过 O(n),因此时间复杂度 O(2^kn^2m)

代码

参考

存在 O(2^k n(n+m)\log n) 的算法