集訓隊作業2018 喂鴿子

2022-03-31 16:19:02 字數 1776 閱讀 7905

設 \(f(n)\) 表示有 \(n\) 只鴿子,每次等概率選乙隻喂,期望餵飽第一只鴿子的時間,\(f_\) 表示有 \(n\) 只鴿子,已經喂了 \(m\) 次,此時這 \(n\) 只鴿子中沒有鴿子被餵飽的概率。

\[ans = \sum_^n (-1)^ f(i) \\

f(n)=\sum_\sum_f_ (\frac)^\\

=\sum_f_\sum_ (\frac)^

\]注意到有

\[(\dfrac)^n=\sum_ x^i

\]所以

\[f(n)=\sum_f_\sum_ (\frac)^ \\

=\sum_f_(\frac)^

\]題外話:我們要求的實際上是恰有 \(i\) 次分配到這個集合的所有方案裡分配到集合外的概率之和,不太好組合意義理解,如果有大爺會組合意義了教教我啊。

接下來求 \(f_\) ,這裡由於之前沒有考慮分配 \(n\) 中玉公尺的概率,所以在這裡最後乙隻鴿子分配到乙個玉公尺的概率是 \(\frac\) 。

\[f_=\frac[x^i] (\sum_^\frac)^n

\]或者也可以遞推

\[f_ =\sum_^f_\frac

\]這樣做複雜度是 \(\mathcal o(n^2klog(nk))\) 的,還有複雜度為 \(\mathcal o(n^2k)\) 的高妙做法,以後再補。

code

/*program by mangoyang*/

#include #define inf (0x7f7f7f7f)

#define max(a, b) ((a) > (b) ? (a) : (b))

#define min(a, b) ((a) < (b) ? (a) : (b))

typedef long long ll;

using namespace std;

template inline void read(t &x)

const int n = 55, k = 1005, mod = 998244353, g = 3;

int f[n][1<<17], js[1<<17], a[1<<17], inv[1<<17], n, k, ans;

inline void up(int &x, int y)

inline int pow(int a, int b)

namespace poly

inline void dft(int *a, int sgn)}}

if(sgn == -1)

}}inline int c(int x, int y)

int main()

f[0][0] = 1;

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

poly::timesinit(i * k);

poly::dft(f[i-1], 1), poly::dft(a, 1);

for(int j = 0; j < poly::len; j++)

f[i][j] = 1ll * f[i-1][j] * a[j] % mod;

poly::dft(f[i], -1);

for(int j = 0; j < poly::len; j++) a[j] = 0;

for(int j = i * (k - 1) + 1; j < poly::len; j++) f[i][j] = 0;

for(int j = 0; j <= i * (k - 1); j++)

} cout << ans << endl;

return 0;

}

UOJ449 集訓隊作業2018 喂鴿子

uoj 看題後 感覺自己越來越菜了,再這樣下去,要是正式考試送溫暖豈不是連溫暖都拿不到了。一臉min max反演的樣子,由於每個鴿子都等價,列舉子集大小 i ii 即可 a ns i 1n n i 1 i 1nif i ans sum n binom n i 1 frac n i f i ans i...

UOJ 449 集訓隊作業2018 喂鴿子

449.集訓隊作業2018 喂鴿子 dp好題 處理前m個,最快吃飽的鴿子期望的時間 根據期望的定義 考慮每個方案數的概率 期望次數 列舉前m個用了x個,概率都是 1 m x em x 而em x 表示往前m個扔了x個期望的總共次數,就是x n m 考慮用了x個的方案數 生成函式egf思想。而出現乙個...

集訓隊作業2018 小Z的禮物

小水題。題意就是不斷隨機放乙個 1 times 2 骨牌,然後取走裡面的東西。求期望多少次取走所有的東西。然後有一維很小。首先顯然 minmax 容斥,將最後取走轉化為欽定一些物品,求第乙個取走的期望。然後顯然第乙個取走的期望只和剩下能蓋到物品的骨牌數有關。乙個骨牌能蓋到物品只和相鄰的兩個格仔是否欽...