codevs1647 炮兵陣地

2022-05-20 06:08:30 字數 958 閱讀 1877

這個題是乙個經典的狀壓dp,m<=10,意味著我們可以將每一層的狀態壓起來,提前預處理好,然後列舉當前在哪一層和i層 i-1層 i-2層的狀態,理論上來說,這樣最壞的時間複雜度是o(2^3m*n),但是因為障礙物的存在,以及預處理當中對左右格仔的判斷,時間複雜度會大大優於最壞情況,所以能夠卡著過

#include#include

#include

#include

#include

#include

#include

using

namespace

std;

vector

mmp[110

];char s[15

];int di[110],n,m,dp[2][1030][1030

],tail,ans;

inline

void init()//

預處理好所有能夠成為狀態的方案,按層存起來 }}

}inline

intget(int x)//

數數這個狀態有多少棋子

return

re;}

intmain()

}init();

for(int i=0;i1].size();i++)//

提前預處理好前兩層狀態,方便下面運算

for(int j=0;j2].size();j++)

if(!(mmp[1][i]&mmp[2

][j]))

dp[0][mmp[1][i]][mmp[2][j]]=max(dp[0][mmp[1][i]][mmp[2][j]],get(mmp[1][i])+get(mmp[2

][j]));

for(int i=3;i<=n;i++)//

列舉現在到了第幾層 }}

}}

printf("%d

",ans);

}

1185 炮兵陣地

炮兵陣地 time limit 2000ms memory limit 65536k total submissions 2762 accepted 776 description 司令部的將軍們打算在n m的網格地圖上部署他們的炮兵部隊。乙個n m的地圖由n行m列組成,地圖的每一格可能是山地 用 ...

1595 炮兵陣地

1595 炮兵陣地 時間限制 1000 ms 記憶體限制 524288 kb 提交數 503 通過數 322 題目描述 原題來自 noi 2001 司令部的將軍們打算在 n m 的網格地圖上部署他們的炮兵部隊。乙個 n m 的地圖由 n 行 m 列組成,地圖的每一格可能是山地 用 h 表示 也可能是...

poj 1185 炮兵陣地

題目鏈結 題意 在n m的網格地圖上部署炮兵部隊。地圖的每一格可能是山地 用 h 表示 也可能是平原 用 p 表示 如下圖。在每一格平原地形上最多可以布置一支炮兵部隊 山地上不能夠部署炮兵部隊 一支炮兵部隊在地圖上的攻擊範圍如圖中黑色區域所示 如果在地圖中的灰色所標識的平原上部署一支炮兵部隊,則圖中...