题目就是每行每列最多放两个炮的意思: 首先不难想到状态压缩dp,但是当n,m<=100的时候显然会跪掉: 考虑每行最多就2个点,状压dp浪费了大量的空间 由于每行最多两个点,我们可以直接用f[i,j,k]表示状态到第i行放1个炮有j列,2个炮有k列 方程具体见程序 ; ..,..,..] of int64; i,j,n,p,k,m:longint; ans:int64; function c2(x:int64):int64; begin c2:=x*(x-) mod re; end; begin…