相關:
強相關:
327. 玉公尺田
[狀壓dp] 小國王(狀壓dp)是井字形,本題是十字形。
思路:
狀態計算:時間複雜度:n∗2
n∗2n
=o(n
22n)
=12∗2
24n*2^n*2^n=o(n2^)=12*2^
n∗2n∗2
n=o(
n22n
)=12
∗224
看著妥妥超時,但是裡面合法狀態很少…依舊可以過
在此,head
陣列儲存對應關係,其實不必要存state
陣列的值。也可以存state
陣列中兩個合法狀態各自的下標。因為這也是一一對映的關係,且dp
陣列在列舉最後一維狀態的時候,也可以存下標。這樣**能簡潔很多…
**:
#include
#include
#include
#include
using
namespace std;
const
int n =
14, m =
1<<
12, mod =
1e8;
int n, m;
int g[n]
;// 將地圖每一行抽象為二進位制表示
vector<
int> state;
vector<
int> head[m]
;int f[n]
[m];
bool
check
(int x)
intmain()
for(
int i =
0; i <
1<< m;
++i)if(
check
(i))
state.
push_back
(i);
for(
int i =
0; i < state.
size()
;++i)
for(
int j =
0; j < state.
size()
;++j)
f[0]
[0]=
1;for(
int i =
1; i <= n +1;
++i)
for(
int a =
0; a < state.
size()
;++a)
for(
int b =
0; b < head[state[a]].
size()
;++b)if(
(g[i]
& state[a])==
0)f[i]
[state[a]]=
(f[i]
[state[a]
]+ f[i -1]
[head[state[a]
][b]])
% mod;
cout << f[n +1]
[0]<< endl;
return0;
}
同理[狀壓dp] 小國王(狀壓dp),也可以用下標對映狀態的思想,在dp
陣列中存下標即可。**能簡潔方便點。
存下標,簡潔**:
#include
#include
#include
#include
using
namespace std;
const
int n =
14, m =
1<<
12, mod =
1e8;
int n, m;
int g[n]
;// 將地圖每一行抽象為二進位制表示
vector<
int> state;
vector<
int> head[m]
;int f[n]
[m];
bool
check
(int x)
intmain()
for(
int i =
0; i <
1<< m;
++i)if(
check
(i))
state.
push_back
(i);
for(
int i =
0; i < state.
size()
;++i)
for(
int j =
0; j < state.
size()
;++j)
f[0]
[0]=
1;for(
int i =
1; i <= n +1;
++i)
for(
int a =
0; a < state.
size()
;++a)
for(
int b : head[a])if
((g[i]
& state[a])==
0)f[i]
[a]=
(f[i]
[a]+ f[i -1]
[b])
% mod;
cout << f[n +1]
[0]<< endl;
return0;
}
狀壓DP 玉公尺田
農夫約翰的土地由m n個小方格組成,現在他要在土地裡種植玉公尺。非常遺憾,部分土地是不育的,無法種植。而且,相鄰的土地不能同時種植玉公尺,也就是說種植玉公尺的所有方格之間都不會有公共邊緣。現在給定土地的大小,請你求出共有多少種種植方法。土地上什麼都不種也算一種方法。輸入格式 第1行包含兩個整數m和n...
玉公尺田 狀壓DP 記搜
乙個n m role presentation n m n m的矩陣裡,有幾個是可以種植玉公尺的。求玉公尺種植不相連的方案數。dfs爆搜 只 能拿90分,正解是狀壓dp。可以把可種植玉公尺的土地用1表示,貧瘠的土地用0表示,每一行串成的數字就是乙個二進位制數,狀態壓縮後,就成了乙個較小的十進位制數。...
jzoj 1266 玉公尺田(狀壓dp)
description 農民 john 購買了一處肥沃的矩形牧場,分成m n 1 m 12 1 n 12 個格仔。他想在那裡的一些格仔中種植美味的玉公尺。遺憾的是,有些格仔區域的土地是貧瘠的,不能耕種。精明的 fj 知道奶牛們進食時不喜歡和別的牛相鄰,所以一旦在乙個格仔中種植玉公尺,那麼他就不會在相...