time limit: 10 sec memory limit: 162 mb
submit: 3121 solved: 1858
[submit][status][discuss]
今天是hidadz小朋友的生日,她邀請了許多朋友來參加她的生日party。 hidadz帶著朋友們來到花園中,打算
坐成一排玩遊戲。為了遊戲不至於無聊,就座的方案應滿足如下條件:對於任意連續的一段,男孩與女孩的數目之
差不超過k。很快,小朋友便找到了一種方案坐了下來開始遊戲。hidadz的好朋友susie發現,這樣的就座方案其實
是很多的,所以大家很快就找到了一種,那麼到底有多少種呢?熱愛數學的hidadz和她的朋友們開始思考這個問題
…… 假設參加party的人中共有n個男孩與m個女孩,你是否能解答susie和hidadz的疑問呢?由於這個數目可能很
多,他們只想知道這個數目除以12345678的餘數。
僅包含一行共3個整數,分別為男孩數目n,女孩數目m,常數k。
應包含一行,為題中要求的答案。
1 2 1
1n , m ≤ 150,k ≤ 20。
設狀態方程:
f[i][j][x][y]表示在 i個男生,j個女生,男生-女生為x,女生-男生為y 時的方案數
如果用絕對值表示差值,無法判斷加入乙個男生/女生對差值的影響,因此多開幾維
f[i+1][j][x+1][max(y-1,0)]+=f[i][j][x][y]
f[i][j+1][max(x-1,0)][y+1]+=f[i][j][x][y]
迴圈中會出現超出範圍的無效計算,因此注意把陣列開大一點,無效計算消耗的時間基本可以忽略不計
1 #include2 #include3using
namespace
std;45
const
int mod=12345678;6
intn,m,k,sum,ans;
7int f[155][155][25][25];8
9int
main()
1022
for(int x=0;x<=k;x++)
23for(int y=0;y<=k;y++)
24 ans=(ans+f[n][m][x][y])%mod;
25 printf("%d"
,ans);
26 }
bzoj1037 ZJOI2008 生日聚會
bzoj1037 zjoi2008 生日聚會 題意 一排小孩坐著玩遊戲。就座的方案滿足如下條件 對於任意連續的一段,男孩與女孩的數目之差不超過k。給出男孩數,女孩數和k,求就座方案數除以12345678的餘數。題解 dp方程見程式,i1i2表示當前選了幾男幾女,i3i4分別表示當前男比女多幾個和女比...
bzoj1037 ZJOI2008 生日聚會
今天是hidadz小朋友的生日,她邀請了許多朋友來參加她的生日party。hidadz帶著朋友們來到花園中,打算坐成一排玩遊戲。為了遊戲不至於無聊,就座的方案應滿足如下條件 對於任意連續的一段,男孩與女孩的數目之差不超過k。很快,小朋友便找到了一種方案坐了下來開始遊戲。hidadz的好朋友susie...
ZJOI2008 生日聚會
zjoi2008 生日聚會 今天是hidadz小朋友的生日,她邀請了許多朋友來參加她的生日party。hidadz帶著朋友們來到花園中,打算 坐成一排玩遊戲。為了遊戲不至於無聊,就座的方案應滿足如下條件 對於任意連續的一段,男孩與女孩的數目之 差不超過k。很快,小朋友便找到了一種方案坐了下來開始遊戲...