POJ-2411-Mondriaan's Dream

xiaoxiao2021-02-28  17

正文前先说一点废话。

自去年联赛开始已经一年没有带着学术心理碰电脑了tt

关于这道题我也是今天看到以前的博客的时候才想起来做过了tt

重新又做了一遍理解很深刻了吧quq

希望可以把状压cp掌握地更好一些quq

然后po决定要转c!!!(因为c是面向对象的而popo没有对象)

最后一篇p的博文 希望喜欢。

——————————我是正文与废话的分割线——————

先放个题目链接。

Mondriaan's Dream

众所周知,这是一道状压dp的题。

f[i][sta]表示前i行铺满后,第i+1行状态为sta的方案数。

直接放代码了哦。(づ ̄3 ̄)づ╭❤~

var change:array[-1..1000005,1..2]of longint; f:array[-1..15,0..5005]of int64; m,i,j,n,num:longint; procedure make(t,from,too:longint); begin if t=m then begin inc(num); change[num,1]:=from; change[num,2]:=too; exit; end; if t>m then exit; make(t+1,(from<<1)+1,too<<1); make(t+1,from<<1,(too<<1)+1); make(t+2,from<<2,too<<2); end; begin readln(n,m); while (n<>0)and(m<>0) do begin num:=0; make(0,0,0); fillchar(f,sizeof(f),0); f[0,0]:=1; for i:=1 to n do for j:=1 to num do f[i,change[j,2]]:=f[i,change[j,2]]+f[i-1,change[j,1]]; writeln(f[n,0]); readln(n,m); end; end.
转载请注明原文地址: https://www.6miu.com/read-2629750.html

最新回复(0)