×
解除綁定,重新設定系統帳號的密碼
您的系統帳號 ID:
您的系統帳號:
您的帳號暱稱:
設定新密碼:
設定新密碼:
×
請輸入要加入的「課程代碼」
請向開設課程的使用者索取「課程代碼」
分類題庫
解題動態
排行榜
討論區
競賽區
登入
註冊
發表新討論
#17033: 解題方向
rollfc
(胖胖貓)
學校 : 國立清華大學
編號 : 81012
×
傳送站內訊息
傳給:
主題:
內容:
來源 : [49.216.18.187]
最後登入時間 :
2024-11-10 10:25:04
b597.
Stickst
--
SEARCC-ISSC國際學生程式設計競賽
| From: [140.113.136.219] | 發表日期 : 2019-03-01 19:19
想問一下這題的解題方向,想法是改編於 d375-uva10364 的題目。 (1) 將所有的線段加總後的總長度做質因數分解,只保留因數的數值大於等於最大線段長的數值 這些因數都可能是筷子的長度。 (2) 將輸入的線段由大到小排列,因數部分由小到大排列。 枚舉所有可能的因數直到成功為止, 成功的定義為可以用所有的線段組出剛好邊長是現在這個因數的長度且數量等於總長度/因數 但是 d375-uva10364 的題目測資範圍只有20個片段組成,這題最多會到達50個, 如果挑戰失敗意謂著會把所有可能嘗試過都無法組出來,所以需要更好的剪枝來達成, 而我自己將每次判斷某個線段是不是被用過的判定改為 狀態壓縮的方式加速,但還是吃 TLE。 看了一下 d375-uva10364 的其他人最佳做法可以把時間壓縮到 0ms 以內, 自己即便用狀態壓縮,時間上還是需要 11ms ,所以推測這題會出現 TLE 也是剪枝不夠好導致。 所以想問一下這題通過的大大 或是 d375-uva10364 的人有哪些更好的剪枝判定? d375-uva10364 目前列出來的只有 (1) 總長度必須是4的倍數 (2) 最大線段邊長不能超過 總長度/4 (3) 將線段由大到小排列後再做 DFS 以上只有 (3) 可以沿用到這題,(1)(2) 在解法的第一步時已經濾除 。
ZeroJudge Forum