题目链接:https://www.luogu.com.cn/problem/P5664
去年考场上我很菜。。。
现在还是一样菜。。。。。。
题目抽象出来就是给你一个 n n n行 m m m列的矩阵(数表),可以从里面选出任意个数,每一行只能选一个数,要求每一列选出的数不超过选出总数的 ⌊ 1 2 ⌋ \lfloor \frac{1}{2} \rfloor ⌊21⌋,每一个方案的贡献是所有选出的数的乘积,求所有方案之和取模
如果要直接保证每一列选出的数不超过选出总数的 ⌊ 1 2 ⌋ \lfloor \frac{1}{2} \rfloor ⌊21⌋,一时想不出,可以考虑进行容斥,因为每个方案只有可能有一列选出的数超过。
枚举每一列为超出总数 ⌊ 1 2 ⌋ \lfloor \frac{1}{2} \rfloor ⌊21⌋的列,同时设 d p [ i ] [ j ] [ k ] dp[i][j][k] dp[i][j][k]为前 i i i行选出 j j j个该列的数,总共选出了 k k k个数的方案的值, s [ i ] s[i] s[i]为第 i i i行值的和,该列为第 q q q列
d p [ i