FROM WOJ 1568 炮兵陣地

2021-09-13 11:25:09 字數 2441 閱讀 9077

題面

司令部的將軍們打算在nm的網格地圖上部署他們的炮兵部隊。乙個nm的地圖由n行m列組成,地圖的每一格可能是山地(用"h" 表示),也可能是平原(用"p"表示),如下圖。在每一格平原地形上最多可以布置一支炮兵部隊(山地上不能夠部署炮兵部隊);一支炮兵部隊在地圖上的攻擊範圍如圖中黑色區域所示:

如果在地圖中的灰色所標識的平原上部署一支炮兵部隊,則圖中的黑色的網格表示它能夠攻擊到的區域:沿橫向左右各兩格,沿縱向上下各兩格。圖上其它白色網格均攻擊不到。從圖上可見炮兵的攻擊範圍不受地形的影響。 現在,將軍們規劃如何部署炮兵部隊,在防止誤傷的前提下(保證任何兩支炮兵部隊之間不能互相攻擊,即任何一支炮兵部隊都不在其他支炮兵部隊的攻擊範圍內),在整個地圖區域內最多能夠擺放多少我軍的炮兵部隊。

輸入

第一行包含兩個由空格分割開的正整數,分別表示n和m; 接下來的n行,每一行含有連續的m個字元(『p』或者』h』),中間沒有空格。按順序表示地圖中每一行的資料。

輸出

僅一行,包含乙個整數k,表示最多能擺放的炮兵部隊的數量。

樣例輸入

5 4phpp

pphh

pppp

phpp

phhp

樣例輸出

6提示

n

<

=100;m

<=10

。n <= 100;m <= 10。

n<=1

00;m

<=1

0。sol

很水的狀壓dp。

這道題看似令人頭疼,實際上只需轉化成兩種情況——豎著的和橫著的,且只需要考慮相鄰3行。

於是只需要考慮兩種衝突——當前行和前兩行的同一列,當前行的相鄰3個。

很多衝突可以進行預處理,但我沒有預處理,大家如果要卡常可以多寫些預處理。

**:

#include

#define lowbit(x) (x&-x)

#define int long long

#define n 10

using

namespace std;

inline

intrd()

int f[3]

[1<

<

,sum[

1<

,ok[

100]

,tot,n,m;

char ch[20]

;inline

void

write

(int x)

inline

bool

check

(int x)

signed

main()

}for

(int

register i=

0;i<=tot;i++)}

for(

intregister t=

0;t<=tot;t++)if

(check

(t)&&

!(t&ok[0]

))f[0]

[t][0]

=sum[t]

;for

(int

register t=

0;t<=tot;t++

)for

(int

register j=

0;j<=tot;j++)if

(check

(t)&&

check

(j)&&

!(t&ok[0]

)&&!(j&ok[1]

))f[1]

[j][t]

=sum[j]

+sum[t]

;for

(int

register i=

2;i)for

(int

register pre=

0;pre<=tot;pre++)}

}int

register ans=

0ll;

for(

intregister i=

0;i<=tot;i++

)for

(int

register j=

0;j<=tot;j++

)ans=

max(ans,f[

(n-1)%

3][i][j]);

write

(ans)

;puts(""

);return0;

}

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 表示 如下圖。在每一格平原地形上最多可以布置一支炮兵部隊 山地上不能夠部署炮兵部隊 一支炮兵部隊在地圖上的攻擊範圍如圖中黑色區域所示 如果在地圖中的灰色所標識的平原上部署一支炮兵部隊,則圖中...