[BZOJ4944/UOJ#316][NOI2017]泳池(概率DP+常係數齊次線性遞推)
Address
洛谷P3824
BZOJ4944
UOJ#316
LOJ#2304
Solution…
一、差分 容斥
要限制最大值恰好為一個定值往往是不好做的。
所以考慮容 (cha) 斥 (fen) ,把詢問
拆成
和
,這樣就轉化成了出現過的每一個安全子矩形
為了方便,下面我們只討論每一個安全子矩形面積都不超過 的求法。
(求 和求 的方法大致相同,但是要特殊處理 和 的情況,否則在 UOJ 上會被 hack )
的答案為:
即最下面 個格子全部不安全。
的答案就不用解釋了,為 。
二、 和
狀態
的定義為底邊長為
,高為
,最下面恰好
行全部安全並且這個底邊長為
高為
的矩形內不存在任意安全子矩形面積大於
的概率。
表示底邊長為
,高為
,最下面至少
行全部安全並且不存在任意安全子矩形面積大於
的概率。相當於是
的字尾和。
設
為第
列的最下面有多少個安全的格子。
那麼顯然第
列到第
列內的最大安全子矩形為
乘上
在區間
內的最小值。
這涉及到所有區間的最小值,故可以採用笛卡爾樹的思想,找到最小值並向最小值的兩邊分治處理。
對於
,我們先列舉
表示
中最左的最小值在
位置。顯然
應該為
(
的定義為最小值恰好為
)。
則
必須嚴格大於
即
(因為
是最左的最小值),
即
。
必須大於等於
,即
。
的概率就是下面
個格子全部安全而第
個格子不安全的概率。
即
。
得出轉移:
是
的字尾和:
邊界:
複雜度:看上去是
,但是任何一個