P3120
樸素dp
\(dp_{i, j}\) 表示從 \((1, 1)\) 出發到 \((i, j)\) 的方案數,有 \(O(rc)\) 的轉移,總時間複雜度 \(O(r^2c^2)\),透過不了。
最佳化
設 \(sums\) 為 \((1, 1)\) 到 \((i - 1, j - 1)\) 的方案數和,\(sumd\) 為 \((1, 1)\) 到 \((i - 1, j - 1)\) 中,最後一個顏色為 \(a[i][j]\) 的方案數和,\(dp_{i, j}\) 即為 \(sums - sumd\)。
可以在列舉 \(j\) 的時候,把上一列的資訊 \(O(r)\) 維護一下,時間複雜度 \(O(r^2 c)\)。
再最佳化
艹,十一 oj 過不了,因此在進行最佳化,因為這個轉移限制很多,形式類似 cdq 分治,所以考慮對行進行分治,然後列舉列,考慮 \([L, mid)\) 對 \((mid, R]\) 的影響,同樣用桶處理,再加上即可。
注意這題的分治順序與正常的 cdq 分治不同,因為 \([L, mid)\) 對 \((mid, R]\) 有很大影響,所以先處理中間再處理下面。
P3121
ac 自動機,再開個棧標記一下。