【AGC017 F】ZigZag

Description

有一個n行的三角形,第i行有i個格子。第i行第j個格子用(i,j)表示。從(i,j)可以到達(i+1,j)和(i+1,j+1)。現在要確定m條從(1,1)出發到第n行的路徑。設第a條路徑走到的第b個格子是(b,X[a,b]),對於任意a < b,不能存在i,使得X[a,i]>X[b,i]。同時還有K條形如(a,b,c)的限制,表示第a條路徑第b個點到第b+1個點必須往方向c走。
求合法的方案數模10^9+7
n,m≤20

Analysis

首先O(n*3^n)DP顯然

  • 設出狀態f[i][j][s]表示做了前i條路,第i條走到第j步,狀態爲s。這裏的s前j位是由第i條路徑確定,後面的位由第i-1條確定
  • 精髓在於,通過等價轉換將dp值強行累計入等價的狀態中(討論向右走還是向左,向左就對狀態做些手腳),以做到優化複雜度而不重不漏
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章