我好弱啊,根本做不出啊~我開始懷疑我學了動規沒......
首先瓶子容量要++,然後小a和uim是一起走的,只是輪流吸魔液而已。
開乙個陣列f[i][j][k][p]表示在(i,j)格仔處,二人魔液相差k,是第p個人吸。
那麼uim吸魔液可以看成是小a扔掉一些魔液。bob表示瓶子容量,得到狀態轉移方程:
f[i][j][k][0]+=f[i-1][j][(bob+k-ma[i][j])%bob][1]+f[i][j-1][(bob+k-ma[i][j])%bob][1];
f[i][j][k][1]+=f[i-1][j][(k+ma[i][j])%bob][0]+f[i][j-1][(k+ma[i][j])%bob][0];
初始:f[i][j][ma[i][j]][0]=1。就是小a吸這個格仔的魔液。
最後求所有f[i][j][0][1]的和即可。
注意常數優化。
#include#include#include#include#include#include#include#includeusing namespace std;
int read()
int n,m,bob,mod=1000000007;
int ma[805][805];
int f[805][805][17][2];
int main()
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)ans=(ans+f[i][j][0][1])%mod;
printf("%d",ans);
return 0;
}
洛谷 P1373 小a和uim之大逃離
小a和uim來到雨林中探險。突然一陣北風吹來,一片烏雲從北部天邊急湧過來,還伴著一道道閃電,一陣陣雷聲。剎那間,狂風大作,烏雲布滿了天空,緊接著豆大的雨點從天空中打落下來,只見前方出現了乙個披頭散髮 青面獠牙的怪物,低沉著聲音說 呵呵,既然你們來到這,只能活下來乙個!小a和他的小夥伴都驚呆了!瞬間,...
洛谷p1373 小a和uim之大逃離
題目大意 小a和uim在乙個n m的矩陣內,矩陣的每乙個格仔有魔液,小a和uim各有乙個魔瓶,只能向下或者向右走,逃離的要求是 最後一步由uim走到且小a和uim魔瓶內的魔液等量。魔液量要 k 1 題意 可以從任何一點開始,問有多少種逃離方法。先從重疊子問題開始思考狀態,對於每乙個格仔i,j,可以是...
洛谷 P1373 小a和uim之大逃離 dp
給你乙個n m的矩陣,每個格仔有乙個魔法值,小a和小b一起只能向右或者向下走,每次交替著吸取魔法,因為他們還修煉道術,所以只要是體內魔法值超過了k就會重新進行新的迴圈。每次都是小a先吸,可以從任何格仔開始,問你當小b吸完魔法能量以後,小a小b能量相等的機會為多少。一開始沒看清楚題,然後設了個f i ...