题目大意
有一个 1001×n 1001 × n 的的网格,每个格子有 q q 的概率是安全的, 的概率是危险的。
定义一个矩形是合法的当且仅当:
- 这个矩形中每个格子都是安全的
- 必须紧贴网格的下边界
问你最大的合法子矩形大小为 k k 的概率是多少。
吉老师:这题本来是 k≤20000 k ≤ 20000
题解
一道好题。
我们计算最大子矩形不超过 i i 的答案 ,那么答案就是 sk−sk−1 s k − s k − 1 。
显然最后一行连续的安全格子不会超过 k k 个。
设 表示长度为 j j ,高度为 的海域全部是安全的,剩下的部分未知,最大子矩形 ≤k ≤ k 的概率。
设 hi,j h i , j 表示长度为 j j ,高度为 的海域中,前 i i 行全部是安全的,剩下的未知且 是危险的,最大子矩形 ≤k ≤ k 的概率。
边界:
gk,1gi,0hi,0=qk(1−q)=1=1(1)(2)(3) (1) g k , 1 = q k ( 1 − q ) (2) g i , 0 = 1 (3) h i , 0 = 1
那么我们从 k−1 k − 1 到 1 1 DP,对于 行 j j 列,枚举第 行的下一个危险的格子在哪个地方,然后转移:
gi,j