計數 客星璀璨之夜 大佬

2022-03-24 18:43:49 字數 2188 閱讀 8440

「雖然不清楚是不是那兩人的力量

在那個風暴肆虐的夜晚,的確有一瞬

真的在那一瞬間,在雲破天開的時候

透過空隙中看到的璀璨星空,不知為何倒映眼中不能忘懷」 ——《奇蹟召喚星辰》

原題是hdu 6848,魔改的挺厲害的,看來組題的那位學長也是個東方廚233

考試的時候看不懂題,花了10min打了個30分暴力滾粗,想著回來再看看他。

然後30分就成了最終得分。

做法來自\(sir\)

將問題轉化,球與洞間的距離是可列舉的,一共\(\frac\)種,我們需要求的是這段距離的總貢獻,就需要知道其方案數。

定義: \(dp[i][j]\) 為,所列舉的球與洞之間有\(i\)對球洞,所列舉的洞後面還有\(j\)對球和洞的方案數。

然後轉移:

\[dp[i][0] = (2i-1)\times dp[i - 1][0]

\](有i個球,乙個球有兩種方向,最靠近列舉的洞的球有乙個方向不能走,然後就成了遞迴子問題)

\[dp[0][j] = (2^j \times j!) + (2j-1) \times dp[0][j - 1]

\](\(2^j \times j!\),即考慮先讓所列舉的球去擊打所列舉的洞,然後所列舉的洞後面所有球和洞就可以隨便打了,方案數就是\(2^j \times j!\))

\[dp[i][j] = (2i-1) \times dp[i - 1][j] + (2j-1) \times dp[i][j - 1]

\]然後列舉每個球和洞,用對應的dp乘上距離即可,注意dp時預設球在前洞在後,所以反向再做一遍。

dp陣列的預處理:

void pre_work() 

}}

統計答案:

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

}for (int i = n; i >= 2; i -= 2)

}sum = jc[n / 2] * qpow(2, n / 2) % mod;

ans = ans * qpow(sum, mod - 2) % mod;

乘上\(2^} \times a_}^}\) 的原因是:(此時的n已乘2,i為所列舉的球的下標)

我們在考慮dp時沒有算上列舉的球之前的球和洞的影響,所以列舉的球之前的球和洞可以在整個過程中的任何乙個時刻發生碰撞。

整個過程會發生\(n\)次碰撞,影響就是\(a_}^}\),再乘上\(2^\)

辣雞ljh noi之後就退役了,然後就滾去學文化課了。

他發現katarina大佬真是太強了,於是就學習了一下katarina大佬的做題方法。

比如這是一本有n道題的練習冊,katarina大佬每天都會做k道題。

第一天做第\(1……k\)題,第二天做第 \(2 …… k + 1\) 題……第 \(n-k+1\) 天做第\(n-k+1 …… n\)道題。

但是辣雞 ljh 又不想太累,所以他想知道katarina大佬做完這本練習冊的勞累度。

每道題有它的難度值,假設今天katarina大佬做的題目中最大難度為t,那麼今天katarina大佬的勞累度就是wt?,做完這本書的勞累值就是每天的勞累值之和。

但是辣雞ljh一道題都不會,自然也不知道題目有多難,他只知道題目的難度一定在\(1……m\)之間隨機。

他想讓即將參加 noip 的你幫他算算katarina大佬做完這本書的勞累值期望

這題不是秒切嗎 ——\(sir\)

這題一定不要去考慮每道題的貢獻,這樣一道題可能會被掃\(1\)到\(n-k+1\)遍不等,沒辦法計算貢獻。

於是考慮每個滑動視窗的貢獻,發現對於視窗而言,貢獻與所處位置無關,只與視窗的長度即\(k\)有關,於是只考慮乙個視窗的貢獻最後乘上\(n-k+1\)

\(sir\) 版**:

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

}ans = ans * qpow(qpow(m, k), mod - 2) % mod * (n - k + 1) % mod;

更簡潔一點:

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

ans = ans * (n - k + 1) % mod * qpow(qpow(m, k), mod - 2) % mod;

Solution LOCAL 客星璀璨之夜

ouroj.給定座標軸上的 2n 1 個座標 x 1,x 2,cdots,x 其中偶數下標的位置是乙個小球,奇數下標的位置是乙個球洞。每次操作隨機選擇乙個小球,並隨機讓它向左或向右滾入臨近的球洞,該球洞被填滿,視作平地。求所有球進洞後,球滾動總距離的期望。對 998244353 取模。n le300...

計數DP之數字

乙個數字被稱為好數字當他滿足下列條件 它有 2 n個數字,n 是正整數 允許有前導 0 構成它的每個數字都在給定的數字集合 s中。它前 n位之和與後 n 位之和相等或者它奇數字之和與偶數字之和相等。第一行乙個數 n。接下來乙個長度不超過 10的字串,表示給定的數字集合 不存在重複的數字 一行,乙個整...

分類計數原理與分步計數原理 計數問題之容斥原理

今天來聊聊計數問題中的容斥原理。我們知道加乘原理,加乘 中的 加 其實是分類思想的體現,這種分類是基於乙個前提,就是你的是你的,我的是我的,每個分類都分的清清楚楚,彼此無交叉。而今天要聊的容斥原理與此不同,容斥是你中有我,我中又有你。容指包含 斥指排除,大概是這個意思吧!容斥的問題可以利用文氏圖 又...