应该比较好理解吧……車不能与其他車放置在同行和同列,还必须要求每个車的左上不能有其他車。
不过棋盘的放置是不确定的,可以
n
作为行也可以
m
作为行,所以把
n
和
m
反过来再DP一遍。发现有时候
n
作为行无解有时候
m
作为行无解,有解时
n<m
,所以DP一遍就好了。
这样随便一个
O(nm2)
的DP就出来了,可是……过不去……
那么找找优化方法,注意到第二行的DP类似于对第一行做了个前缀和,每一行与前一行都错开一位做前缀和处理,所以那个DP式子中代价
O(m)
的求和就可以优化一下……
列个表看一下,其实DP方程就被优化成了这样: