ABC332

D

我们可以把矩阵 \(\text{A}\) 看成 \({p,q}\)

\(p\) 指现在一行最开始在哪里,\(q\) 指现在这一列最开始在哪里。

于是我们枚举 \(p\)\(q\) 所有可能的情况,如果修改后的 \(\text{A}\)\(\text{B}\) 一样,那么就可以直接统计答案。

code

E

考虑 dp。

定义 \(dp_{S,i}\) 为当前状态为 \(S\) 分成了 \(i\) 个福袋的答案。

考虑怎么转移。

如果 \(T\)\(S\) 的子集,那么 \(C_sT\) 就可以形成另一个福袋。

所以就有 dp 式了。

\[dp_{S,i} = \min_{T\subseteq S} dp_{S-T,i-1} + dp_{T,1} \]

于是问题就变成了如何求 \(dp_{T,1}\)。其实这个问题非常简单。直接把取到的所有数相加,减去平均值再除以 \(D\) 即可。

code

posted @ 2023-12-10 22:10  sqrtqwq  阅读(58)  评论(0编辑  收藏  举报