推 singlovesong:LIS不是nlog(l) 的解法嗎 怎麼會TLE 08/31 01:24
→ singlovesong:nlog(L) Q_Q 08/31 01:25
→ pcyu16:先針對長或寬做 sorting, 再用另一個維度做 LIS 08/31 09:55
沒錯,這樣Nlog(N)的LIS還是會TLE!!!Q__Q
※ 編輯: flere 來自: 123.195.195.32 (08/31 09:58)
→ pcyu16:那你應該是哪裡寫錯了吧..||| 這樣會TLE測資也太多... 08/31 09:59
他是要做"很多次" LIS把所有盒子合併起來耶
最慘的case就是全部都並不起來,
這樣的話就會TLE了
因為這樣就變成N * Nlog(N)
因為每做一次LIS就是要看N這麼多個
如果每次LIS都只有長度是1
那下次做的時候是N-1個
最後就變成至少N^2
還是我理解錯了嗎???
※ 編輯: flere 來自: 123.195.195.32 (08/31 10:37)
→ scwg:LIS 作一次就可以找出最多可以串多少個箱子啦. 兩兩都無法放 08/31 10:38
→ scwg:入的情況作一次就知道最長長度為一, 就輸出 n-1 啦 08/31 10:38
我覺得我題目可能沒說得很清楚Q__Q
題目並不是要找LIS的長度,
而是要問幾個LIS可以把這個set給全部包含
比如說
5個物品
分別是 (10,10) (20,30) (39,51) (40,25) (41,26)
這樣做第一次LIS時可以拿到(10,10) (20,30) (39,51)
於是這3個盒子可以縮成一個盒子
總盒子剩下(40,25) (41,26)這二個 (還有一個剛剛已經縮成一個的盒子)
於是第二次LIS可以拿到 (40,25) (41,26)
於是這兩個縮成一個盒子
所以最後要輸出剩下2個盒子
並不是做完LIS後,輸出N-LIS的長度> <
※ 編輯: flere 來自: 123.195.195.32 (08/31 10:52)
※ 編輯: flere 來自: 123.195.195.32 (08/31 10:52)
推 pigalan:LDS 08/31 11:17
→ scwg:題目是這樣的話根本不用做 LIS, 照第一維排序 (相等時照第二 08/31 11:26
→ scwg:維排) 然後 greedy 掃一次, 也是 nlog n 應該就可以了 08/31 11:26
對耶!!!!感謝!!!!!!
這樣做完後就過了> <
雖然我掃了不只一次> <
※ 編輯: flere 來自: 123.195.195.32 (08/31 12:00)
推 suhorng:pigalan的LDS是正解, O(n log n) 08/31 21:58
→ suhorng:LDS就是把LIS的increasing改成decreasing 08/31 21:59
→ suhorng:不過是跟 Dilworth's theorem 有關嗎orz 不太有印象 08/31 22:11
→ suhorng:上面這個稍微不太一樣XD 08/31 22:11
→ suhorng:等等XDDDD 先當我沒說 08/31 22:14
推 scwg:沒錯, greedy 的時候做的確實是 longest decreasing sequence 09/01 00:15
推 cutekid:有辦法證明 LDS 求出來的數字就等於最小盒子數嗎 09/09 17:40
→ cutekid:最小盒子數不可能小於 LDS 求出來的數字,比較好理解 09/09 17:42
→ cutekid:啊最小盒子數不可能大於 LDS 解出來的數字,這邊就不知道 09/09 17:43
→ cutekid:怎麼證了.. 09/09 17:43
推 ke1vin:dilworth 沒錯啊就是 dilworth 02/16 03:28