题目链接
【Codeforces 923E】Perpetual Subtraction
做法
设当前取到 $ i \in [0, n] $ 的概率生成函数为 $ f(x) $ , 下一步后为 $ F(x) $ ,则:
$$ F(x) = \sum_{ i = 0 }^{ n }{ x^i \sum_{ j = 0 }^{ n }{ \frac{ [x^j] f(x) }{ j + 1 } } } $$
$$ = \sum_{ j = 0 }^{ n }{ \frac{ [x^j] f(x) }{ j + 1 } \frac{ x^{ j + 1 } - 1 }{ x - 1 } } $$
$$ = \frac{ 1 }{ x-1 } { \sum_{ j = 0 }^{ n } [x^j] f(x) \int_{ 1 }^{ x } t^j { \rm d } t } $$
$$ = \frac{ \int_{ 1 }^{ x } f(t) { \rm d } t }{ x - 1 } $$
令 $ g(x) = f(x + 1) $ ,则:
$$ G(x) = F(x + 1) = \frac{ \int_{ 0 }^{ x } g(t) { \rm d } t }{ x } $$
$$ [x^i] G(x) = \frac{ [x^i] g(x) }{ i + 1 } $$
$ m $ 次操作后 $ [x^i] G(x) = \frac{ [x^i] g(x) }{ (i + 1)^m } $
已知 $ [x^i] f(x) $ 求 $ [x^i] g(x) $ :
$$ \sum_{ i = 0 }^{ n }{ g_i x^i } = \sum_{ i = 0 }^{ n }{ f_j (x + 1)^j } = \sum_{ j = 0 }^{ n }{ f_j \sum_{ i = 0 }{ j }{ C(j, i) x^i } } $$
$$ g_i = \sum_{ j = i }^{ n }{ C(j, i)f_j } $$
$$ i! g_i = \sum_{ j = i }^{ n }{ \frac{ j! f_j }{ (j - i)! } } $$
已知 $ [x^i] g(x) $ 求 $ [x^i] f(x) $ :
$$ i! f_i = \sum_{ j=1 }^{ n }{ \frac{ j! f_j }{ (-1)^{ j - i }( j - i )! } } $$
$ NTT $ 卷积即可。时间复杂度 $ O(n \log n) $ 。
1 |
|