#31111: Python TLE 解題思路


jm168.fen@gmail.com (銘芬)

學校 : 不指定學校
編號 : 196588
來源 : [61.230.45.159]
最後登入時間 :
2022-07-17 21:21:08
a981. 求和問題 | From: [61.230.89.216] | 發表日期 : 2022-07-12 15:16

一開始用遞迴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
來源 : [120.109.159.202]
最後登入時間 :
2024-10-29 16:21:40
a981. 求和問題 | From: [42.79.209.63] | 發表日期 : 2022-07-24 01:04

一開始用遞迴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
來源 : [122.117.95.179]
最後登入時間 :
2024-11-04 20:21:51
a981. 求和問題 | From: [1.168.34.122] | 發表日期 : 2023-01-25 09:50

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

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

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

 
ZeroJudge Forum