洛谷 P1233 木棍加工

2021-08-28 16:40:52 字數 1127 閱讀 8669

題目鏈結

p1233 木棍加工

解題思路:

其實就是求最長上公升子串行(參見diworth定理,序列的不下降子串行最少劃分數等於上公升序列的總長度)

以測試資料為例:

輸入:

5

1018186

1019

1913

208

輸出:

3
可以理解為最後加工的組數為3組,取其中一種情況,比如:

(10,19),(10,18);

(19,13),(18,6);

(20,8)

在這三組中我們一定可以找出一組最長上公升子串行例如:

(10,18),(19,13),(20,8)
滿足a[i

].

l>a[

j].l

&&a[

i].w

j].w

a[i].l>a[j].l\&\&a[i].wa[

i].l

>a[

j].l

&&a[

i].w

j].w

,此時更新f陣列即可。

#include

#include

#include

using

namespace std;

struct nodea[

5010];

int f[

5010];

bool

cmp(node a,node b)

intmain

(int argc,

char

** argv)

sort

(a+1

,a+n+

1,cmp)

;int ans=-1

;for

(int i=

1;i<=n;i++)}

ans=

max(ans,f[i]);

}printf

("%d\n"

,ans)

;return0;

}

洛谷 P1233 木棍加工

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

洛谷P1233 木棍加工

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

洛谷 P1233 木棍加工

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