[CODE+]白金元首与莫斯科
如果说障碍格子已经确定,那么可以用一个简单的插头dp算出方案数。
那么可以暴力枚举障碍格子,但这样是$O(n^2m^22^m)$的。
注意到由于不确定的状态格子只有一个,因此可以从左上到右下dp一次,再从右下到左上dp一次,令两次的dp数组分别为$F1[i][j][S]$和$F2[i][j][S]$,那么当$(x,y)$为障碍时,答案就是$\sum F1[i][j-1][S1]\times F2[i][j+1][S2]$,$S1$和$S2$满足轮廓线上对应位置要么都有插头,要么都没有。如果在记录状态的时候都记录在当前坐标位置,那么就是$S1=S2$,注意到$(x,y)$这个点的上下左右四个方向都不能有插头。
复杂度$O(nm2^m)$
代码:
1 |
|