Re: [ACM ] 714 WA (updated)

看板C_and_CPP (C/C++)作者 (幻影成風)時間16年前 (2009/11/03 22:40), 編輯推噓4(405)
留言9則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《pokia (幻影成風)》之銘言: : http://acm.uva.es/p/v7/714.html : My code: http://nopaste.info/2bc3437c51.html : 現在一直WA了... : 不知道演算法有沒有錯... : 還是output那邊有問題 : 自己測了好多測資都沒問題...所以也不知道還有什麼bug 最近把這題拿出來重寫... 想用dynamic programming的方式 不過題目給的條件好像不符合suboptimal的特性? 例如: 10 2 10 2 15 20 30 以DP來解會得到 10 / 2 10 2 15 / 20 1 / 30 但實際答案是 10 2 10 / 2 15 / 20 1 / 30 因為題目的這一句: If there is more than one solution, print the one that minimizes the work assigned to the first scriber, then to the second scriber etc. 其實在做 10 2 10 2 15 時 正確答案會得到 10 / 2 10 2 15 maxsum = (10,2+10+2+15) = 29 但suboptimal 10 2 10 / 2 15 maxsum = (10+2+10,2+15) = 22 好像違反了suboptimal的特性?? 所以這題是不是沒辦法用DP解 只能binary search嗎?? 還是要加上什麼條件呢?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.245.19

11/04 09:35, , 1F
你得先確定你找出的recurrence是正確的
11/04 09:35, 1F

11/04 09:36, , 2F
如果發現不對 那就要再找另外一種recurrence
11/04 09:36, 2F

11/04 11:21, , 3F
DP 應該是沒問題的, 他的條件只是 backtrack 時的 tie break
11/04 11:21, 3F

11/04 12:15, , 4F
切子問題可以從左端切掉 不要從右端切掉 事情會簡單得多
11/04 12:15, 4F

11/04 22:54, , 5F
AC了...用DP O(n^3)的方式明顯很慢...
11/04 22:54, 5F

11/04 22:55, , 6F
最後只能用greedy的方式來求'/'的擺放位置
11/04 22:55, 6F

11/05 09:11, , 7F
DP或許能再加速 就像optimal binary search tree的O(N^2)
11/05 09:11, 7F

11/05 10:11, , 8F
另外'/'的位置沒必要用greedy來求 recurrence設計的夠好就行
11/05 10:11, 8F

11/05 10:12, , 9F
以前有寫過 但是code沒留下 不知道印象對不對
11/05 10:12, 9F
文章代碼(AID): #1Ay43GhB (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
2
4
完整討論串 (本文為第 2 之 2 篇):
2
4
文章代碼(AID): #1Ay43GhB (C_and_CPP)