HDU 6377度度熊看球賽(dp)

2021-08-22 17:56:56 字數 1082 閱讀 5699

題目

世界盃正如火如荼地開展!度度熊來到了一家酒吧。

有 n 對情侶相約一起看世界盃,熒幕前正好有 2×n 個橫排的位置。

所有人都會隨機坐在某個位置上。

當然,如果某一對情侶正好挨著坐,他們就會有說不完的話,影響世界盃的**。

一般地,對於乙個就座方案,如果正好有 k 對情侶正好是挨著坐的,就會產生 dk 的喧鬧值。

度度熊想知道隨機就座方案的期望喧鬧值。

為了避免輸出實數,設答案為 ans,請輸出 ans×(2n)! mod p 的值。其中 p=998244353

思路:dp[i][j]表示已有i對情侶入座,j對情侶坐在一起的方案數。

for(int i=1;i<=n;i++)

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

完整**:

#includeusing namespace std;

typedef long long ll;

const ll mod=998244353;

const int n=1000;

ll dp[n+5][n+5],p[n+5];

void init()

///第i對情侶分開

dp[i][j]+=dp[i-1][j+2]*((j+2)*(j+1)/2)%mod;

if(dp[i][j]>mod)

dp[i][j]-=mod;

dp[i][j]+=dp[i-1][j+1]*(2*(i-1)-(j+1)+1)*(j+1)%mod;

if(dp[i][j]>mod)

dp[i][j]-=mod;

dp[i][j]+=dp[i-1][j]*((2*(i-1)-j+1)*(2*(i-1)-j)/2)%mod;

if(dp[i][j]>mod)

dp[i][j]-=mod;

}}int n;

ll d;

int main()

ans=ans*p[n]%mod;

printf("%lld\n",ans);

}return 0;

}

hdu6377 百度之星2018 度度熊看球賽

dp找對物件 第一思路考慮按位置dp然後炸了 可以按每隊情侶是否在一起dp f i j 代表到第i對情侶j對在一起的方案數 include 設定插入點 include 字元處理 include 定義錯誤碼 include 浮點數處理 include 定義各種資料型別最值常量 include 定義本地...

hdu 6080 度度熊保護村莊

嘩啦啦村襲擊了喵哈哈村!度度熊為了拯救喵哈哈村,帶著自己的夥伴去救援喵哈哈村去了!度度熊與夥伴們很快的就過來佔據了喵哈哈村的各個軍事要地,牢牢的守住了喵哈哈村。但是度度熊發現,這是一場曠日持久的戰鬥,所以度度熊決定要以逸待勞,儲存盡量多的體力,去迎戰嘩啦啦村的戰士。於是度度熊決定派盡量多的人去休息,...

HDU 6375 度度熊學佇列

danshlem description 度度熊正在學習雙端佇列,他對其翻轉和合併產生了很大的興趣。初始時有 n 個空的雙端佇列 編號為 1 到 n 你要支援度度熊的 q 次操作。1 u w val 在編號為 u 的佇列裡加入乙個權值為 val 的元素。w 0 表示加在最前面,w 1 表示加在最後面...