题解 [AGC039F] Min Product Sum(没写完)

本题感觉其实想透了并不难,思路很有目的性。

link


考虑每次这样表示最大值最小值好复杂!那就 设出来

\(a_i\) 为第 \(i\) 行的最小值,\(b_i\) 为第 \(i\) 列的最小值。答案即为:\(\prod _{x=1}^N\prod_{y=1}^M \min(a_x,b_y)\)

那我们肯定想对应原来的矩阵,发现 如果 我们确定了 \(a\)\(b\),这种情况的方案数可不好整啊。我们要保证 \(a、b\) 的值需要被取到。由于这之间又有冥冥之中的联系,由于我们不方便具体地确定值。

那就 容斥\(\mathrm{ans}=\sum_{u=0}^N\sum_{v=0}^M (-1)^{u+v}\prod_{(i,j)}K-\max (a_i+f_i,b_j+f_j)+1\)。(p.s. 这只是 yy 的一个式子,具体实现还需要我们用组合数复杂度去枚举到底那些 \(a、b\)\(f\)\(1\),哪些的为 \(0\)

发现容斥不通,但却可以给后面的 \(\mathrm {dp}\) 带来一些启发。观察前面性质,其实很自然地设 \(dp_{i,j,k}\) 为当前选了 \(\geqslant i\) 的数,选了 \(j\) 个行,\(k\) 个列的方案数。由于我们一个一个选有可能会出现顺序的问题,那么相同 \(i\) 的行或列一次选完

\(\mathrm {Way\ 1}\)
从小到大枚举 \(i\)
对于每一个 \(i\) 我们枚举 \(a,b\) 表示有且仅有 \(a\) 行的最小值为 \(i\)\(b\) 行的最小值为 \(j\),选到此时的贡献。
\(dp_{i,j+a,k}=dp_{i,j,k}*\binom {n-j} {a}*()((K-i+1)^{m-j}-(K-i)^{m-j})\)

我们尝试 用 dp 来实现容斥。具体地,对于每一个 \(i\) 我们枚举 \(a,b,c,d\) 表示值为 \(i\) 时,\(a\) 行的容斥系数为 \(1\)\(b\) 行的容斥系数为 \(-1\)\(c\) 列的容斥系数为 \(1\)\(d\) 列的容斥系数为 \(-1\)

\(dp_{i,j+a,k}=dp_{i-1,j,k}*\binom {n-j} {a}*(K-i+1)^{ak}*i^{a(m-k)}\)
\(dp_{i,j+b,k}=dp_{i-1,j,k}*\binom {n-j} {b}*(-1)^b*(K-i)^{bk}*i^{b(m-k)}\)
\(dp_{i,j,k+c}=dp_{i-1,j,k}*\binom {m-k} {c}*(K-i+1)^{cj}*i^{c(n-j)}\)
\(dp_{i,j,k+d}=dp_{i-1,j,k}*\binom {m-k} {d}*(-1)^d*(K-i)^{dj}*i^{d(n-j)}\)
(本质上是个乘法原理)

posted @ 2022-07-07 14:56  Saintex  阅读(31)  评论(0编辑  收藏  举报