POJ1185 炮兵陣地(狀壓DP)

2022-02-27 19:42:59 字數 2551 閱讀 1478

這個和之前的不一樣,在於某個點影響的範圍是兩格。那麼dp(cur,pre,i)表示第i行狀態為cur,i-1行狀態為pre時可以有多少種放法。轉移的時候列舉ppre,就是i-2行即可。照葫蘆畫瓢

1/*2

━━━━━┒ギリギリ♂ eye!

3┓┏┓┏┓┃キリキリ♂ mind!

4┛┗┛┗┛┃\○/

5┓┏┓┏┓┃ /

6┛┗┛┗┛┃ノ)

7┓┏┓┏┓┃

8┛┗┛┗┛┃

9┓┏┓┏┓┃

10┛┗┛┗┛┃

11┓┏┓┏┓┃

12┛┗┛┗┛┃

13┓┏┓┏┓┃

14┃┃┃┃┃┃

15┻┻┻┻┻┻

16*/

17 #include 18 #include 19 #include 20 #include 21 #include 22 #include 23 #include 24 #include 25 #include 26 #include 27 #include 28 #include 29 #include 30 #include 31 #include 32 #include

33 #include 34 #include 35

using

namespace

std;

36#define fr first

37#define sc second

38#define cl clear

39#define bug puts("here!!!")

40#define w(a) while(a--)

41#define pb(a) push_back(a)

42#define rint(a) scanf("%d", &a)

43#define rll(a) scanf("%i64d", &a)

44#define rs(a) scanf("%s", a)

45#define cin(a) cin >> a

46#define fread() freopen("in", "r", stdin)

47#define fwrite() freopen("out", "w", stdout)

48#define rep(i, len) for(int i = 0; i < (len); i++)

49#define for(i, a, len) for(int i = (a); i < (len); i++)

50#define cls(a) memset((a), 0, sizeof(a))

51#define clr(a, x) memset((a), (x), sizeof(a))

52#define full(a) memset((a), 0x7f7f7f, sizeof(a))

53#define lrt rt << 1

54#define rrt rt << 1 | 1

55#define pi 3.14159265359

56#define rt return

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

58#define onecnt(x) __builtin_popcount(x)

59 typedef long

long

ll;60 typedef long

double

ld;61 typedef unsigned long

long

ull;

62 typedef pairpii;

63 typedef pairpsi;

64 typedef pairpll;

65 typedef mapmsi;

66 typedef vectorvi;

67 typedef vectorvl;

68 typedef vectorvvl;

69 typedef vectorvb;

7071

const

int maxn = 101;72

const

int maxm = 11;73

char

tmp[maxm];

74int dp[1

<1

<75int

g[maxn];

76int

n, m;

7778

bool ok(int x, int

i) 84

85signed main() 96}

97 rep(i, mm)

100 rep(i, mm)

105}

106 for(i, 3, n+1

) 114

}115

}116

}117

int ret = 0

;118

rep(i, mm)

122}

123 printf("

%d\n

", ret);

124}

125 rt 0

;126 }

POJ1185(炮兵陣地) 狀壓DP

每一行的狀態是取決於上一行和上上一行的,所以每次更新的時候需要記錄當前行的狀態和下一行的狀態,然後再進行遞推。不過估算了一下複雜度是10的11次方,嚇得我都沒敢寫啊!看了一下別人的部落格,居然真有這樣寫過的,於是就自己實現一邊啦 最後看了以下討論版,處理一下複雜度可以降低的,最後貼討論版 思路 令p...

POJ1185 炮兵陣地 狀壓dp

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

POJ 1185 炮兵陣地 狀壓DP

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