Luogu P1373 小a和uim之大逃離

2021-08-04 20:11:09 字數 1035 閱讀 4502

題目描述傳送門

一看這題首先想到設d(

i,j,

k1,k

2,0)

表示在小a剛吸完i,j這個位置的魔液,小a和uim的魔瓶的魔液量分別為k1,k2時的方案數,d(

i,j,

k1,k

2,1)

表示在uim剛吸完……的方案數。

但是這樣明顯會爆記憶體…於是我就一直卡著了。後來看到討論區有差這個字,才想到把狀態減少到d(

i,j,

k,0)

和d(i

,j,k

,1) 其中k為 小a的魔瓶量與uim的魔瓶量之差.

另外我用的是順推,感覺更好想。

**

#include

#include

#include

#include

#include

using

namespace

std;

const

int mo=1e9+7;

int n,m,k,d[800][800][16][2],a[800][800];

int main()

for(int i=0;ifor(int j=0;jfor(int u=0;u<=k;u++)

if(j+1

1]; if(k1>k) k1-=(k+1);

d[i][j+1][k1][0]=(d[i][j+1][k1][0]+d[i][j][u][1])%mo;

k1=u-a[i][j+1];

if(k1<0) k1+=(k+1);

d[i][j+1][k1][1]=(d[i][j+1][k1][1]+d[i][j][u][0])%mo;}}

int ans=0;

for(int i=0;ifor(int j=0;j0][1])%mo;

cout

0;}

luogu P1373 小a和uim之大逃離

這是一道求方案數的題。我很菜,不太會寫方案數的題,所以看了下題解,並寫下這篇部落格。首先,我們是在乙個n m的格仔裡走,有兩種走法,乙個是向右,乙個是向下。起點任意,終點任意。在你走的路徑上,第奇數個點是小a取走其中的液體,第偶數個點是uim取走其中的液體,必須走偶數個點。我們所要求的是,走到終點後...

LUOGU P1373 小a和uim之大逃離 題解

小a和uim來到雨林中探險。突然一陣北風吹來,一片烏雲從北部天邊急湧過來,還伴著一道道閃電,一陣陣雷聲。剎那間,狂風大作,烏雲布滿了天空,緊接著豆大的雨點從天空中打落下來,只見前方出現了乙個披頭散髮 青面獠牙的怪物,低沉著聲音說 呵呵,既然你們來到這,只能活下來乙個!小a和他的小夥伴都驚呆了!瞬間,...

luogu P1373 小a和uim之大逃離

小a和uim來到雨林中探險。突然一陣北風吹來,一片烏雲從北部天邊急湧過來,還伴著一道道閃電,一陣陣雷聲。剎那間,狂風大作,烏雲布滿了天空,緊接著豆大的雨點從天空中打落下來,只見前方出現了乙個披頭散髮 青面獠牙的怪物,低沉著聲音說 呵呵,既然你們來到這,只能活下來乙個!小a和他的小夥伴都驚呆了!瞬間,...