1. 程式人生 > >【BZOJ4944】【NOI2017】泳池 概率DP 常係數線性遞推 特徵多項式 多項式取模

【BZOJ4944】【NOI2017】泳池 概率DP 常係數線性遞推 特徵多項式 多項式取模

題目大意

  有一個1001×n的的網格,每個格子有q的概率是安全的,1q的概率是危險的。

  定義一個矩形是合法的當且僅當:

  • 這個矩形中每個格子都是安全的
  • 必須緊貼網格的下邊界

  問你最大的合法子矩形大小為k的概率是多少。

  n109,k1000

  吉老師:這題本來是k20000

題解

  一道好題。

  我們計算最大子矩形不超過i的答案si,那麼答案就是sksk1

  顯然最後一行連續的安全格子不會超過k個。

  設gi,j表示長度為j,高度為i的海域全部是安全的,剩下的部分未知,最大子矩形

k的概率。

  設hi,j表示長度為j,高度為i+1的海域中,前i行全部是安全的,剩下的未知且(i+1,j)是危險的,最大子矩形k的概率。

  邊界:

(1)gk,1=qk(1q)(2)gi,0=1(3)hi,0=1
  那麼我們從k11DP,對於ij列,列舉第i+1行的下一個危險的格子在哪個地方,然後轉移:
(4)gi,j=k=0jhi,k
gi+1,jk(5)hi,j=k=0j1hi,kgi+1,jk1qi(1q)

  因為第i行的寬度不會超過ki,所以的暴力的時間複雜度是