題目鏈結
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,這個棍子就不需要...