2018 “百度之星”程序設計大賽 - 初賽(A)1004 / hdu6377 度度熊看球賽 dp遞推
阿新 • • 發佈:2018-08-12
的確 就會 世界杯 .cn 世界 problem 產生 amp 表示
(2)第 i+1 對不插入另一對中間,dp[i+1][j+1] += dp[i][j] * (2*i+1-j) ;
2、第 i+1 對不在一起:
(1)第 i+1 對的兩個人分別插入另外兩對中間,dp[i+1][j-2] += dp[i][j] * C(j,2) ;
(2)第 i+1 對的兩個人只有一個人插入到另一對中間,dp[i+1][j-1] += dp[i][j] * C(j,1) ;
(3)第 i+1 對的兩個人都不插入其它對裏,dp[i+1][j] += dp[i][j] * C(2*i+1-j, 2) ;
度度熊看球賽
Problem Description
世界杯正如火如荼地開展!度度熊來到了一家酒吧。
有 N 對情侶相約一起看世界杯,熒幕前正好有 2×N 個橫排的位置。
所有人都會隨機坐在某個位置上。
當然,如果某一對情侶正好挨著坐,他們就會有說不完的話,影響世界杯的觀看。
一般地,對於一個就座方案,如果正好有 K 對情侶正好是挨著坐的,就會產生 DK 的喧鬧值。
度度熊想知道隨機就座方案的期望喧鬧值。
為了避免輸出實數,設答案為 ans,請輸出 ans×(2N)! mod P 的值。其中 P=998244353
Input
有多組數據(不超過 1000 組),讀到EOF結束。
對於每一組數據,讀入兩個數 N 和 D 。
1≤N,D≤1000
Output
對於每一組數據,輸出一個數表示答案。
Sample Input
1 10
2 3
Sample Output
20
104
題解:
官方題解其實已經解釋得很好了,這樣 dp 的確很巧妙。
dp[i][j] 表示前 i 對情侶,有 j 對坐在一起的方案數。
首先為了簡便,我們把每對情侶中兩個人看作是相同的兩個人,最後乘上 2^n 即可。
最後要求 ans×(2N)!,也就是求出 i 對情侶坐位所有不同方案數。
然後由前 i 對遞推轉移到前 i+1 對 :
1、第 i+1 對在一起:
(1)第 i+1 對插入進另一對中間, dp[i+1][j] += dp[i][j] * j ;
2、第 i+1 對不在一起:
(1)第 i+1 對的兩個人分別插入另外兩對中間,dp[i+1][j-2] += dp[i][j] * C(j,2) ;
(2)第 i+1 對的兩個人只有一個人插入到另一對中間,dp[i+1][j-1] += dp[i][j] * C(j,1) ;
(3)第 i+1 對的兩個人都不插入其它對裏,dp[i+1][j] += dp[i][j] * C(2*i+1-j, 2) ;
代碼懶得寫了~_~
2018 “百度之星”程序設計大賽 - 初賽(A)1004 / hdu6377 度度熊看球賽 dp遞推