#31111: Python TLE 解題思路


jm168.fen@gmail.com (銘芬)

學校 : 不指定學校
編號 : 196588
來源 : [61.230.45.159]
最後登入時間 :
2022-07-17 21:21:08

一開始用遞迴DFS, 結果最後一個測資TLE, 測資n=30, 值多在100~200, 求和4001, 没有太多情況可砍

求和問題相當於有2^n種情形(每個值可選可不選), 可看成是由0101組成的mask和值的array做sum_of_product

做法:

  1. 值要先排序(python一行解決)
  2. 值分成2半, 各有2^15種組合
  3. 先把後半所有可能產生出來, 並且對某質數用餘數分類(hash)
  4. 前半依序產生出來, 去找適合的後半組合, 因為有分類所以組合數可縮成1/K
#31322: Re: Python TLE 解題思路


murray1122 (murray)

學校 : 不指定學校
編號 : 159940
來源 : [123.240.147.182]
最後登入時間 :
2025-06-19 08:07:00

一開始用遞迴DFS, 結果最後一個測資TLE, 測資n=30, 值多在100~200, 求和4001, 没有太多情況可砍

求和問題相當於有2^n種情形(每個值可選可不選), 可看成是由0101組成的mask和值的array做sum_of_product

做法:

  1. 值要先排序(python一行解決)
  2. 值分成2半, 各有2^15種組合
  3. 先把後半所有可能產生出來, 並且對某質數用餘數分類(hash)
  4. 前半依序產生出來, 去找適合的後半組合, 因為有分類所以組合數可縮成1/K

懂了,但output卻不是完全的按照順序,是有什麼細節漏掉嗎,大大求解QAQ

我的輸出如下 (來自範例) :                                                                                                                            5 15 80, 5 10 15 70, 5 15 20 60, 5 15 30 50, 5 10 15 20 50, 5 10 15 30 40, 10 40 50, 10 20 70, 10 30 60, 10 20 30 40, 20 80, 20 30 50, 30 70, 40 60

#33712: Re: Python TLE 解題思路


asnewchien@gmail.com (david)

學校 : 南投縣立旭光高級中學
編號 : 68108
來源 : [114.42.176.221]
最後登入時間 :
2025-10-04 22:52:03

銘芬這個報告寫得很棒,也很白話。

如果看不懂,就是練習還不夠。

寫信問我的朋友,可以附上 ideone 程式碼討論。

#45161: Re: Python TLE 解題思路


bc1000929@gmail.com (cheater)

學校 : 不指定學校
編號 : 298205
來源 : [220.129.202.122]
最後登入時間 :
2025-01-18 17:38:26

一開始用遞迴DFS, 結果最後一個測資TLE, 測資n=30, 值多在100~200, 求和4001, 没有太多情況可砍

求和問題相當於有2^n種情形(每個值可選可不選), 可看成是由0101組成的mask和值的array做sum_of_product

做法:

  1. 值要先排序(python一行解決)
  2. 值分成2半, 各有2^15種組合
  3. 先把後半所有可能產生出來, 並且對某質數用餘數分類(hash)
  4. 前半依序產生出來, 去找適合的後半組合, 因為有分類所以組合數可縮成1/K

我1.5s過了,太感謝了^^