1. 程式人生 > >POJ1065 Wooden Sticks(貪心+動態規劃——單調遞增子序列)

POJ1065 Wooden Sticks(貪心+動態規劃——單調遞增子序列)

描述

C小加有一些木棒,它們的長度和質量都已經知道,需要一個機器處理這些木棒,機器開啟的時候需要耗費一個單位的時間,如果第i+1個木棒的重量和長度都大於等於

第i個處理的木棒,那麼將不會耗費時間,否則需要消耗一個單位的時間。因為急著去約會,C小加想在最短的時間內把木棒處理完,你能告訴他應該怎樣做嗎?

輸入

第一行是一個整數T,表示輸入資料一共有T組。

每組測試資料的第一行是一個整數N(1<=N<=5000),表示有N個木棒。接下來的一行分別輸入N個木棒的L,W(0 < L ,W <= 10000),用一個空格隔開,分別表示

木棒的長度和質量。

輸出

處理這些木棒的最短時間。

樣例輸入

4 9 5 2 2 1 3 5 1 4 

2 2 1 1 2 2 

1 3 2 2 3 1 

樣例輸出

2

1

3

程式碼如下:

 

解題思路:(貪心演算法 + 動態規劃——單調遞增子序列)

1.首先將木棒排序,總體為l遞增排序,若l相等,則w遞增。

2.對第i個木棒處理:選出單調遞增子序列,並將單調遞增子序列標記為1(使用過)。選出後,時間+1.進行第i+1個木棒的處理