题面
有一个 \(n\times m\) 的矩形纸片,放置在一个平面直角坐标系中,其左下角在 \((0,0)\),右上角在 \((n,m)\) 位置。
有多次操作,每次会均匀随机选择一条平行于坐标轴、经过坐标均为整数的点,且穿过(不能是经过边界)纸片的直线,沿此方向将纸片裁开,并扔掉裁剪线的下侧或右侧的部分。
她想要你求出期望多少次操作后,剩下纸片的面积小于 \(k\)。你只需要求出答案模 \(10^9+7\) 的结果。
数据范围:\(n,m\le 10^6\)。
题解
首先我们看成 "并扔掉裁剪线的下侧或左侧的部分。"
我们考虑将题目转化一下,将一种选取方式对应到一个排列上。
记这个排列为 \(p_1,..,p_{n+m-2}\) ,那么我们从小到大枚举 \(p_i\) :
- 若 \(p_i\le n\) ,那么看如果当前纸片的右端 \(n'\) 是否\(>p_i\) ,如果是则表示割掉 \(p_i\) 右边的部分。如果否则不操作。
- 若 \(p_i> n\) ,那么看如果当前纸片的上端 \(m'\) 是否\(>p_i-n\) ,如果是则表示割掉 \(p_i-n\) 上边的部分。如果否则不操作。
- 如果此时 \(n'm'<k\) ,那么就不操作。
然后考虑期望的线性性,那么我们可以对每一个成功的操作,让其对答案产生 \(1\) 贡献。
考虑对于 \(p_i\in[1,n-1]\) ,那么对于所有 \(p_i<p_j< n\) 的 \(j\) 都要 \(>i\) ,并且对于 \(p_j\in[n,n+m-2],(p_j-n)p_i<k\) 的 \(j\) 都要 \(>i\) 。
那么就可以转化为排列 \(p_{1},...,p_{n+m-2}\),满足第 \(2\sim k+1\) 个位置的数要大于第 \(1\) 个位置的数 的概率,这个答案是 \(\frac{1}{k+1}\) 。
对于 \(p_i\in[n,n+m-2]\) 的考虑是类似的。
启发
- 积累了一个转化模型:将一种随机选择的情况转化到排列上。