P1233 木棍加工

2022-05-24 06:54:09 字數 693 閱讀 5363

我是想寫寫dp來著……所以我查了標籤是dp的題。

在做了三道藍題之後,蒟蒻的我想做一道簡單點的題恢復自信qwq……

於是,這道題,我怎麼也下過不出轉移方程……但是我忽然發現,這道題根本就不用dp!貪心 + 排序即可!

因為我們一定是要時間  < n 的,所以我們就算最後什麼也沒找到,也不會比 n 更差,那麼我們先按照其中乙個值排序,如果想要有比n更好的解,就一定要按照這個順序去找!

那麼就等價於,我們就可以只看其中乙個值就行!

於是這道題就變成了排序,我們想要最少的下降序列,那麼就是求最長的上公升(嚴格上公升)序列!

不懂題解裡的大神都是怎麼想的qwq……

下面貼**;

#include#include

#include

using

namespace

std;

#define maxn 5500

struct

node

a[maxn];

intn;

bool

cmp(node x,node y)

intmain()

int p=lower_bound(c+1,c+1+len,b[i])-c;

c[p]=b[i];

}printf("%d

",len);

return0;

}

P1233 木棍加工

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

P1233 木棍加工

miku 很簡單的線性dp 或者說不用dp 有兩維,隨便按照一維降序排個序,就成了個固定順序的一維問題了。直接 o n 2 貪心劃分不下降子串行或者說運用dilworth定理,求最長上公升子串行 貪心更快誒,可能是因為continue的多?dp include include include inc...

P1233 木棍加工

顯然可以看出是求最小的雙關鍵字不上公升子串行的覆蓋數。根據dirworth定理就可以換去求最長的上公升子串行。雙關鍵字的最長上公升子串行求法 先將乙個關鍵字上公升地排序,另乙個關鍵字下降,按照原來的那樣n 2的做即可。其實蒟蒻不明白其中的原理,如果有大佬知道的話麻煩告訴一聲 include incl...