顯然是狀壓dpdp
dp。設f[s
][i]
[1..3
]f[s][i][1..3]
f[s][i
][1.
.3]表示使用的積木集合是s
ss,最後使用的是積木i
ii,是以長/寬/高維度往上的最高值。
列舉s
ss,再列舉最近放置的積木i
ii和接下來要放置的積木j
jj。然後再列舉使用哪一維往上搭。轉移方程過於顯然了吧。。。
也可以不列舉哪一維,直接9個ifif
if時間複雜度o(2
n×n2
)o(2^n\times n^2)
o(2n×n
2)
#include
#include
using
namespace std;
const
int n=16;
const
int maxn=(1
<<15)
;int n,a[n]
,b[n]
,h[n]
,f[maxn]
[n][4]
,ans;
intmain()
int ms=
1<
for(
int s=
1;s)for
(int i=
1;i<=n;i++)if
((s&(1
<
)==0)
for(
int j=
1;j<=n;j++)if
(i!=j&&
(s&(
1<
))for(
int s=
0;s)for
(int i=
1;i<=n;i++
)for
(int j=
1;j<=
3;j++
) ans=
max(ans,f[s]
[i][j]);
printf
("%d"
,ans)
;return0;
}
狀壓dp 玉公尺田 狀壓dp
相關 強相關 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 看著妥妥超時,但是裡面合法狀態很少 依舊可以過 在此,...
jzoj 1266 玉公尺田(狀壓dp)
description 農民 john 購買了一處肥沃的矩形牧場,分成m n 1 m 12 1 n 12 個格仔。他想在那裡的一些格仔中種植美味的玉公尺。遺憾的是,有些格仔區域的土地是貧瘠的,不能耕種。精明的 fj 知道奶牛們進食時不喜歡和別的牛相鄰,所以一旦在乙個格仔中種植玉公尺,那麼他就不會在相...
狀壓DP 最優配對問題(jzoj 3420)
在平面上有n個點,現在要把他們拼成n 2對,拼接兩個點的代價是他們的平面距離,現在問代價總和最小是多少 4 8730 9323 3374 3929 7890 6727 1257 468920366.602 n 20 用dfs每一次選1個數和當前數字匹配,如果當前數字選過了,就進入下一層 includ...