Prob_Solve 板


LINE

想試著和大家討論看看題目 >_< http://uva.onlinejudge.org/external/126/12615.html 這題是這樣的,有一個Graph,每條邊都有cost 它滿足四個條件: 1. 此圖為連通圖 2. 每個點degree至多6 3. 此圖上若有cycle,則cycle大小一定為3,且任兩個cycle沒有共用的點 4. 所有cycle上的點degree至多4 題目要你找出一個cost總和最小的邊集,滿足所有不此邊集的邊都至少與一條邊集裡的邊 相鄰,回答最小cost即可。 嗯...喜歡玩全自己想題目的可以先看到這裡...接下來我要說我目前的做法 不過我自己覺得我的方法很複雜,想問問看大家有沒有想到什麼精妙的做法 ======= 這題我的直覺就是想到在Tree上做dp 但是我設計的dp在每個點上各有9個state,每次從子節點返回時進行狀態轉移,至多有 9*9*2*2種組合,有點多且挺複雜的 首先要注意到,根據題目條件,用dfs走訪所有點後每個非root的點的back edge至多一條 ,且距離恰為2,所以每個點連出去的邊至多只會影響比它稍微靠進root的兩個祖先 接著,dp過程中,每個點我們都可用三種狀態去表示,分別是: 0:普通的點 1:尚未與任何一條邊集裡的邊相連且與至少一條不滿足條件的邊相連 2:已至少和一條邊集裡的邊相連 由於每個點連的邊至多影響兩個祖先的點,所在dp時可只記錄當前點與父節點的所有狀態 組合,共3*3種 真正的dp過程寫成psedocode會是以下這樣: dp[x][state1][state2] := 只考慮點x的子樹下所有當前已拜訪的邊和點的back edge時, 已知x點的狀態是state1,已及x點的父親的狀態是state2時的最佳解 dfs(x): dp[x][i][j] := 0 when i = j = 0 dp[x][i][j] := INF otherwise 對於所有與x相鄰且尚未拜訪過的y: dfs(y) 把tmp[3][3] 初使化為一個值全為 INF的陣列 for i1 from 0 to 2: //i1,j1,i2,j2是枚舉所有點x和y的dp狀態 for j1 from 0 to 2: for i2 from 0 to 2: for j2 from 0 to 2: for s1 from 0 to 1: //s1=1代表邊(x,y)在邊集裡 for s2 from 0 to 1://s2=1代表y有back edge且該邊在邊集 令st1,st2為根據枚舉的條件得到的x點的新的狀態(過程省略...) 若 tmp[st1][st2] > dp[x][i1][j1] + dp[y][i2][j2] + s1*(邊(x,y)的cost) + s2*(y的back edge cost): 更新tmp[st1][st2]質為右式 把tmp陣列複至給dp[x]陣列 dfs end 可以任意點r當root呼叫dfs(r),最後的答案會是min(dp[r][0][0],dp[r][2][0]) 這過程真的非常複雜,由其轉移的部分很容易就想錯... 有沒有人有更好的想法呢>_<? 此方法必須對在圖上做dfs後邊的可能位置有所了解,可以參考wiki http://en.wikipedia.org/wiki/Depth-first_search#Output_of_a_depth-first_search --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.233.216
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Prob_Solve/M.1421264240.A.D1E.html
1F:推 FRAXIS: 題目要求是不是要找一個maximal matching? 01/15 05:21
2F:推 DJWS: http://ppt.cc/6wKh http://ppt.cc/zkzl 觀眾可能比較多 01/15 07:55
3F:推 DJWS: 看起來是 edge dominating set 01/15 07:58
4F:→ DJWS: maximal matching 是 edge indepenent set 01/15 07:58
5F:→ DJWS: independent 01/15 08:01
6F:→ dreamoon: ICPC台灣參賽者交流社根本沒人在討論題目... 01/15 19:49
7F:→ dreamoon: 資訊競賽選手新手村到是第一次看到 01/15 19:50
8F:→ dreamoon: 若把邊當點,大概可以應轉成一般圖的最大獨立集 01/15 19:53
9F:→ dreamoon: 而且每條邊至多和六條邊相鄰 01/15 19:54
10F:→ dreamoon: 這樣才真的有用到題目條件 01/15 19:54
11F:→ dreamoon: 新手村的成員都太年輕了0.0 01/15 19:55
12F:推 FRAXIS: 你的作法是不是tree decomposition? 01/15 21:44
13F:推 FRAXIS: 這個圖的tree width看起來好像只有2.. 01/15 21:48
14F:推 DJWS: 若把邊當點,是最小支配集。它不等於最大獨立集。 01/15 22:17
15F:→ dreamoon: 抱歉說錯名詞 01/15 22:21
16F:→ dreamoon: 查了一下什麼是tree decomposition,看來我的做法確實 01/15 22:40
17F:→ dreamoon: 是這個東西 01/15 22:40
18F:→ dreamoon: 一般圖最小支配集能做嘛? 01/15 22:41
19F:推 FRAXIS: minimum dominating set是NPC.. 01/15 22:46
20F:推 pigalan: 感覺上在這個圖的BFS Tree作DP會不會比較簡單? 01/29 12:19
21F:→ pigalan: 呃 不會 當我沒說 =口= 01/29 12:19







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:e-shopping站內搜尋

TOP