题目大意:
对n个有编号的球逐一染色(每个球被选中的概率一样),直到存在编号之差小于等于K的两个球被染色为止。问最终被染色的球的个数之期望。
解题思路:
很多人拿到这个题会考虑模拟放球的过程,然后来一个
d
p
dp
dp。
如果这样想的话,那这题应该是废了。实际上,这题依赖于丰富的解题经验,那就是对
n
n
n个有编号的球选
p
p
p个进行染色,使得不存在距离小于K的两个球,合法的方案数是可以
O
(
1
)
O(1)
O(1)计算的,公式如下:
(
n
−
(
p
−
1
)
∗
(
k
−
1
)
p
)
n-(p-1)*(k-1) \choose p
(pn−(p−1)∗(k−1))
如何理解这个公式呢?
觉得这个公式很显然的人会说,在这种限制下的组合和去掉前
(
p
−
1
)
∗
(
k
−
1
)
(p-1)*(k-1)
(p−1)∗(k−1)个球后的组合是一 一对应的。实际上也确实如此,就像分析不定方程的解的个数时候,我们可以改变方程右边的数来适应某些解的限制、
在此公式的基础上,我们有很多种方法来解决这个问题。
擅长式子的人已经开始推导了:
记
P
(
i
)
P(i)
P(i)为恰在染色完第
i
i
i个球后出现冲突的概率,那么答案为
∑
i
=
1
n
i
∗
P
(
i
)
=
∑
i
=
1
n
P
(
i
)
∑
j
=
1
i
1
\sum_{i=1}^{n}{i*P(i)}= \sum_{i=1}^{n}P(i) \sum_{j=1}^{i}1
∑i=1ni∗P(i)=∑i=1nP(i)∑j=1i1
=
∑
j
=
1
n
∑
i
=
j
n
P
(
i
)
=\sum_{j=1}^{n} \sum_{i=j}^{n}P(i)
=∑j=1n∑i=jnP(i)
记
∑
j
=
i
n
P
(
j
)
\sum_{j=i}^{n}P(j)
∑j=inP(j) 为
f
(
i
)
f(i)
f(i), 显然
f
(
i
)
f(i)
f(i)为染色完
i
−
1
i-1
i−1个球后仍未出现冲突的概率,(因为染完
n
n
n个球后是必定出现冲突的)这个可以借助前面提到的公式来解决。
当然,这种解法依赖于我们计算的这个期望。一种更一般的方法是,求出恰在染完第
i
i
i个球后出冲突方案数。
记
Q
(
i
)
Q(i)
Q(i)为染完第
i
i
i个球后不冲突的方案数,
P
P
P同理, 那么
P
(
i
+
1
)
=
Q
(
i
)
∗
(
n
−
i
)
−
Q
(
i
+
1
)
P(i+1)=Q(i)*(n-i)-Q(i+1)
P(i+1)=Q(i)∗(n−i)−Q(i+1).
可能是容斥原理学得比较多的缘故,我能很轻松地想到第二种解法。