題目
世界盃正如火如荼地開展!度度熊來到了一家酒吧。
有 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 表示加在最後面...