1. 程式人生 > >PKU 1065,1548,3636解題報告

PKU 1065,1548,3636解題報告

這幾題的思想和方法都是一樣的,破一題可破三題,首先1065,題意說有很多stick,每個stick都有長度l和重量w,一臺機器需要處理這些stick,首先第一條被處理的機器就需要一次setup time,接下來下根木棍的長度l和w都大於等於前面的木棍的話,那麼就不需要增加setup time,否者需要,問一堆木棍處理完需要最少的setup time是多少,首先它如果大於就不需要setup time,然後就想到了排序,按l排序,如果l相等的話就按w排序,也就是說排序後保證了l是非遞減序列,這時候判斷w是否大與等於前面的w,如果是就把他們放入同一個set time的佇列並標記這個stick不需要set time,依此類推,最後多少個佇列就代表了最少的set time的次數。

PKU 1548和1065幾乎一樣。

PKU 3636和前面兩題的區別只是等於的情況也需要set time 所以排序要做修改,

例如下面的情況

1 2

2 3

2 6

3 4

如果這樣排就導致最少需要3次,因為2 6這裡需要後3 4又需要,所以這時把 2 6排在2 3前面就可以避免這種情況的發生,就是當w相等時候,h按降序排序即可