思路:狀態壓縮dp,對每行的狀態進行列舉,由於乙個炮兵影響相鄰兩行,因此用 dp[i][j][k]來儲存 第i行的狀態為j,第 i-1行狀態為k時的最大個數。
code :
#include#includeusing namespace std;
const int max_n=105;
const int max_m=75;
int n,m;
int d[max_n],p[max_m],s[max_m];
int dp[max_n][max_m][max_m];
int find(int x)
return res;
}bool judge1(int x)
bool judge2(int a,int b)
int main()
int ss=0,mm=(1<
for(int i=0;i<=mm;++i)
if(!judge1(i))
for(int i=0;i
if(!judge2(d[1],p[i])) dp[1][i][0]=s[i];
for(int i=0;i
if(!judge2(d[2],p[i]))
}for(int i=3;i<=n;++i)
for(int j=0;j
if(!judge2(d[i],p[j]))}}
int ans=0;
for(int i=0;i
for(int j=0;j
ans=max(ans,dp[n][i][j]);
cout<
return 0;
}
poj 1185 炮兵陣地
題目鏈結 題意 在n m的網格地圖上部署炮兵部隊。地圖的每一格可能是山地 用 h 表示 也可能是平原 用 p 表示 如下圖。在每一格平原地形上最多可以布置一支炮兵部隊 山地上不能夠部署炮兵部隊 一支炮兵部隊在地圖上的攻擊範圍如圖中黑色區域所示 如果在地圖中的灰色所標識的平原上部署一支炮兵部隊,則圖中...
POJ 1185 炮兵陣地
include include include include include include include include include include include include include include define sz v int v size define rep i,n ...
POJ 1185 炮兵陣地
狀態壓縮專題第一題,自己想了很久,最終還是以別人的 為模板寫的。dp共三維,一維是行數,一維是前一行狀態,一維是前第二行狀態。ps 直接開三維太大,用s陣列記錄下所有可能出現的情況,大大減少時間和空間。include include include includeusing namespace st...