洛谷 P1233 貪心

2021-09-11 02:51:32 字數 957 閱讀 8549

一堆木頭棍子共有n根,每根棍子的長度和寬度都是已知的。棍子可以被一台機器乙個接乙個地加工。機器處理一根棍子之前需要準備時間。準備時間是這樣定義的:

第一根棍子的準備時間為1分鐘;

如果剛處理完長度為l,寬度為w的棍子,那麼如果下乙個棍子長度為li,寬度為wi,並且滿足l>=li,w>=wi,這個棍子就不需要準備時間,否則需要1分鐘的準備時間;

計算處理完n根棍子所需要的最短準備時間。比如,你有5根棍子,長度和寬度分別為(4, 9),(5, 2),(2, 1),(3, 5),(1, 4),最短準備時間為2(按(4, 9)、(3, 5)、(1, 4)、(5, 2)、(2, 1)的次序進行加工)。

輸入格式:

第一行是乙個整數n(n<=5000),第2行是2n個整數,分別是l1,w1,l2,w2,…,ln,wn。l和w的值均不超過10000,相鄰兩數之間用空格分開。

輸出格式:

僅一行,乙個整數,所需要的最短準備時間。

輸入樣例#1:複製

5

4 9 5 2 2 1 3 5 1 4

輸出樣例#1:複製

2
思路:按長度或寬度從高到低排序,比如按長度從高到低排序,那麼只需要考慮寬度問題,就跟攔截飛彈的思路一模一樣了!即求對寬度而言的最長上公升子串行的長度。

#include#includeusing namespace std;

struct node

;node a[5005];

int low[5005];

bool cmp(node a,node b)

int main()

cout

}

貪心,LIS 洛谷P1233 木棍加工

給定一些木棍的長度和寬度,現要安排加工這些木棍的順序,使得總等待時間最少 這道題有點像球賽。首先,我們現滿足長度和寬度中的乙個,為什麼這個一定成立呢?因為長度接上與寬度加上對答案的貢獻都是1,那麼我們盡可能使其中一種先滿足,在求出最多能滿足另一種的方案,其實要滿足另一種的方案,能接上的長度即為最長上...

洛谷 P1233 木棍加工

一堆木頭棍子共有n根,每根棍子的長度和寬度都是已知的。棍子可以被一台機器乙個接乙個地加工。機器處理一根棍子之前需要準備時間。準備時間是這樣定義的 第一根棍子的準備時間為1分鐘 如果剛處理完長度為l,寬度為w的棍子,那麼如果下乙個棍子長度為li,寬度為wi,並且滿足l li,w wi,這個棍子就不需要...

洛谷 P1233 木棍加工

題目鏈結 p1233 木棍加工 解題思路 其實就是求最長上公升子串行 參見diworth定理,序列的不下降子串行最少劃分數等於上公升序列的總長度 以測試資料為例 輸入 5 1018186 1019 1913 208輸出 3可以理解為最後加工的組數為3組,取其中一種情況,比如 10,19 10,18 ...