生日Party 玄學多維DP

2022-02-03 07:02:06 字數 1023 閱讀 8891

今天是hidadz小朋友的生日,她邀請了許多朋友來參加她的生日party。 hidadz帶著朋友們來到花園中,打算坐成一排玩遊戲。為了遊戲不至於無聊,就座的方案應滿足如下條件:對於任意連續的一段,男孩與女孩的數目之差不超過k。很快,小朋友便找到了一種方案坐了下來開始遊戲。hidadz的好朋友susie發現,這樣的就座方案其實是很多的,所以大家很快就找到了一種,那麼到底有多少種呢?熱愛數學的hidadz和她的朋友們開始思考這個問題…… 假設參加party的人中共有n個男孩與m個女孩,你是否能解答susie和hidadz的疑問呢?由於這個數目可能很多,他們只想知道這個數目除以12345678的餘數。

僅包含一行共3個整數,分別為男孩數目n, 女孩數目m, 常數k。

應包含一行,為題中要求的答案。

樣例輸入

1 2 1

樣例輸出

1這個題想都不用想一看就是dp,但狀態怎麼找呢,可以確定的是,男孩和女孩的人數一定佔兩個狀態,因為這個是可以確定他們的方案數的,剩下的我想維護男生與女生之間的差值,但這樣顯然是會出問題的,假如差值為2,那麼有可能男生比女生多2,有可能女生比男生多2,這是兩個方案,而這麼定義狀態的話就會出現少算方案數的情況,所以我們必須要維護男生比女生多的人數,女生比男生多的人數,這樣狀態就有了,定義dp[a][b][c][d]為共有a個女孩,b個男孩,男孩比女孩多c,女孩比男孩多d,那麼每放乙個人,就有兩種可能,男生或女生,轉移兩次即可。

1 #include2

#define g dp[i][j][c][d]

3#define mod 12345678

4using

namespace

std;

5int dp[160][160][25][25];6

intmain()

17int ans=0;18

for(int i=0;i<=k;i++)

19for(int j=0;j<=k;j++)

20 ans=(ans+dp[m][n][i][j])%mod;

21 cout22 }

bzoj1037 DP 生日聚會party

description 今天是hidadz小朋友的生日,她邀請了許多朋友來參加她的生日party。hidadz帶著朋友們來到花園中,打算坐成一排玩遊戲。為了遊戲不至於無聊,就座的方案應滿足如下條件 對於任意連續的一段,男孩與女孩的數目之差不超過k。很快,小朋友便找到了一種方案坐了下來開始遊戲。hid...

生日聚會Party 這個線性dp有點囂張

題目描述 今天是hidadz小朋友的生日,她邀請了許多朋友來參加她的生日party。hidadz帶著朋友們來到花園中,打算 坐成一排玩遊戲。為了遊戲不至於無聊,就座的方案應滿足如下條件 對於任意連續的一段,男孩與女孩的數目之 差不超過k。很快,小朋友便找到了一種方案坐了下來開始遊戲。hidadz的好...

2136 ht的生日party(遞推)

time limit 1 sec memory limit 128 mb submit 83 solved 6 submit status web board 即使tmk上了大學,tmk還是十分懷念以前的高中生活還有以前的小夥伴們。tmk還記得在高考前幾天,tmk和他的小夥伴們參加了ht的生日par...