狀壓DP例題(種花小遊戲 廣場鋪磚)

2021-08-19 23:20:01 字數 964 閱讀 2755

狀態壓縮其實就是用特殊的方法來表示複雜的狀態做dp,這種特殊的方法一般是位運算。

例題一:種花小遊戲

dpi j ,i可以拆分成二進位制數,每一位上的0或1表示是否走過,j表示當前位置。

#include

using

namespace

std;

const

double maxn=200000000.0;

double f[600010][30],jl[30][30],ans=maxn;

int x[30],y[30],sum=0,n;

double dp(int now,int st)

return f[now][st];

}void work()

for(int i=1;i<=n;i++)

printf("%.2lf",ans);

}int main()

scanf("%d%d",&x[0],&y[0]);

work();

return

0;}

很水。

例題二:廣場鋪磚

#include

using

namespace

std;

long

long sum=0,f[30][3000],w,h;

void dp(int i,int st,int now,int next,int d)

//第幾行,初始狀態,現在狀態,下一行狀態,這行第幾個;

if((now&(1

<

else

dp(i,st,now,next,d+1); //不能鋪;

}int main()

鋪瓷磚 狀壓dp

最近學了狀壓dp,把之前未解決的題目捋一捋。這是之前的一道題 今天蒜頭君裝修新家,給家裡買了一種 1 2或2 1 的長方形 如圖1 新瓷磚。蒜頭君是個懂得審美的人,畢竟人生除了金錢,還有詩和遠方。這個時候蒜頭君就在想,這種長方形的瓷磚鋪到乙個 10 10 10 times 10 10 10 的地面上...

鋪瓷磚 狀壓dp經典問題

給出 n m的矩形方塊,可以往上面鋪1 2的磚塊,問鋪滿這個方塊的方案有多少種。磚塊可以豎鋪和橫鋪,豎鋪的話會影響到下一行,橫鋪的話不會影響到下一行,這裡我們令1 表示該方塊不會影響下一行,0 表示該方塊會影響下一行。條件一 考慮 i.j 這一格,如果 i 1,j 上是0,那說明 i 1,j 是豎鋪...

codevs1358棋盤遊戲 狀壓dp

時間限制 1 s 空間限制 64000 kb 題目等級 大師 master 這個遊戲在乙個有10 10個格仔的棋盤上進行,初始時棋子位於左上角,終點為右下角,棋盤上每個格仔內有乙個0到9的數字,每次棋子可以往右方或下方的相鄰格仔移動,求一條經過數字之和最小且經過0到9的所有數字的合法路徑,輸出其長度...