洛谷 P1233 木棍加工(LIS,狄爾沃斯定理)

2022-02-13 12:07:43 字數 578 閱讀 3950

先按照l為第一關鍵字,w為第二關鍵字從大到小排序,保證前面的l一定比後面的大於等於,這樣就能排除一維影響。

然後問題就變成了在排好序的序列中找最長不上公升子串行的個數,根據狄爾沃斯定理(飛彈攔截定理),我們得知最長不上公升子串行的個數就等於最長上公升子串行的長度。

所以這裡o(n^2)求即可。

注意n^2演算法的答案不是dp[n],而是計算dp時ans取max。

1 #include2 #include3 #include4 #include5 #include6

using

namespace

std;

7const

int maxn=5005;8

struct

nodea[maxn];

11int

n,dp[maxn],ans;

12bool

cmp(node a,node b)

15int

main()

1625 ans=max(ans,dp[i]);26}

27 cout<28return0;

29 }

貪心,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 ...