Problem
給一個球球堆起的三角堆,抽走一顆球或者使其他球滑落到其他地方 (失去支撐),則所有落下、拿走的球將會是得到的分數。求最多能獲得多少分數。
Sample Input
|
|
Sample Output
|
|
Solution
面對三角堆,我們由左往右、由上而下考慮是否要將球移開,而這麼做很容易得到一個 O(n^3)
的做法,利用輔助數據壓縮在 O(n^2)
完成 (因為中間有一段迴圈是找後綴最大值)。
轉移的時候也很簡單,考慮兩種情況
- 只考慮移除自己的時候落下的所有球
- 考慮與前一列別處拿走所產生的交集情況
在第二種可以發現,如果考慮左側高於自己的球球被移除的情況可以忽略不計。
|
|