2018年3月3日

UVa10664 Luggage

不知不覺3月就到了#

寫一題基本一點的題目~

連結:UVa10664 Luggage

題目:

有N個不同重量的行李,判斷是否能分出兩堆相同重量的行李放在兩台車上。
(0<N<=20)

做法:

先想暴力,即在每個重量前放上+或-號,可以枚舉2^N種結果
若有存在結果為0的就代表可以達成


不過,顯然地總和若為奇數是無法達成的
總和必須是偶數,平分後車上的行李重量恰是總和的一半

所以我們發現,我們也可以由"是否能挑出某些行李 其重量和是總重量和(sum)的一半"來判斷
於是問題轉換成容量為sum/2的01背包,複雜度為O(N*sum),在此題最多是20*200,頗小

code:


沒有留言:

張貼留言