【vijos1286】座位安排
Description
考场里的座位恰好有n行m列,并且恰好有n*m位考生在这个考场里面考试,也就是说,所有的座位上都有考生。hzy根据学校记载,有k位考生可能作弊,因此hzy不能让他们之中的任何两个人做在相邻的座位上!所谓相邻的座位,即在同一行相邻列或者在同一列的相邻行的座位。hzy准备这样安排座位,首先随机选择一种方案,如果这种方案是合法的,就用这种方案,否则重新选择。你的任务是计算,他得到一个合法方案时,需要的期望选择次数。
传送门
Solution
设每次选择合法方案的概率为 p= 合法方案数 /Ckn×m 。
那么选择的期望次数为:
∑li=1(1−p)i−1⋅i⋅p=p∑li=1(1−p)i−1⋅i (l→∞)
设 M=∑li=1(1−p)i−1⋅i ,则 (1−p)M=∑li=1(1−p)i⋅i 。
那么
(1−p)M−M=−pM=l⋅(1−p)l−∑li=0(1−p)i
=l⋅(1−p)l−((1−p)l+1−1(1−p)−1)
。
因为 l→∞ ,所以 −pM=−1p , pM=1p 。
当然期望步数也可以不这样算(上面的没懂没有关系)。
我们设期望步数为x,那么我们有方程 x=p+(1−p)(1+x) ,解得 x=1p 。(显然比上面的式子简单多了,要理解也很容易)
所以最终答案就是 Ckn×m/合法方案数 。
现在我们考虑怎么求这个方案数。
设
fi,j,S
表示第
i
行的作弊学生状态为
一开始把第一行的
这里压缩状态要以小的那个压缩。