公告歡迎來到 Larry's notes,近期會持續整理網站。
※ LeetCode, UVa 與 YZUCSE 系列相關文章已從首頁的文章列表中移除。可從首頁的釘選分類瀏覽。
※ LeetCode, UVa 與 YZUCSE 系列相關文章已從首頁的文章列表中移除。可從首頁的釘選分類瀏覽。
UVa - 11456 解題紀錄
題目: UVa - 11456 - Trainsorting
題目說明
d052. 11456 - Trainsorting - 高中生程式解題系統
解題思路
weighs[] 存放依序車廂的重量,n 為車廂的總數量,之後遍歷陣列,核心想法為,由於新進的車廂只能放在頭尾,因此當遍歷到第 i 車廂時,若能找出 i 到 n - 1 的最長嚴格遞增子序列 ( Longest Increasing Subsequence ) 的長度及最長嚴格遞減子序列 ( Longest Decrease Subsequence ),就可以找到第一個車廂放 i,能組出的最大車廂重量,因為 LDS 遞減,每個位於 LDS 中的車廂都能放到最前面,而 LIS 遞增,每個位於 LIS 中的車廂都能放到最後面。
有了以上想法後,使用 DP 找出 LIS 及 LDS 即可,記得要從後面開始往前做。
參考解法
1 |
|
參考資料
【題解】ZeroJudge d052: 11456 - Trainsorting - Yui Huang 演算法學習筆記
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Larry's notes!
評論