看板 C_and_CPP 關於我們 聯絡資訊
借圖用一下 1 2   1 2   1 2 ●─●   ●─●   ● ● │╳│ =  /  ∪ │\│ ●─●   ●─●   ● ● 3 4   3 4   3 4 產生的數列 1 - 2 - 3 - 4 端點 中間點 中間點 端點 2 - 4 - 1 - 3 端點 中間點 中間點 端點 你會發現端點對是(1,4)(2,3) 6個點只看端點。端點對會是(1,6)(2,5)(3,4) 400個點只看端點。端點對會是(1,400)(2,399)(3,398).....(200,201) 如果你還有多餘的時間寫個dfs跑出所有生成樹。 可能會找出 1 - 6 - 5 - 4 - 3 - 2 3 - 6 - 4 - 2 - 5 - 1 這兩棵生成樹,然後跑來講說端點對(1,2)(3,1)不符合我所講的。 可是,兩組解並非"最大數量",可以產生很多種類似的這種兩組解。 但是依循這兩組解再去產生第三組解,你會發現生不出來。 為什麼生出來? 細看點5和點6 點5只剩下3可以連接,點6只剩下2可以連接。 所以雛型是 5 - 3 - ... - ... - 2 - 6 ...的地方讓你填1和4,可是怎麼填都只會和樹1或樹2重複到。 5 - 3 - 1 - 4 - 2 - 6 其中的4 - 2和樹2是一樣的。不合。 5 - 3 - 4 - 1 - 2 - 6 其中的3 - 4和樹1是一樣的。不合。 所謂的n / 2解答在於 6個點的點1,他的連接選擇為 2, 3, 4, 5, 6, 總共5種選擇。 但他會當一次的端點和當其他次的中間點。 端點只會和1個點連線,選擇只需扣1。 中間點一定會和左右兩點連線。中間點必須扣2。 當端點 5 - 1 = 4 當中間點 4 - 2 = 2 當另一次的中間點 2 - 2 = 0 點1是這樣,同理點2 ~ 點6也是這樣,每個點的結果都會剛好是0。 所以當端點的一次 + 當中間點的兩次 = 3 n / 2是這樣來的。 Bleed ============================================================================== 以6個點為例。 1 - 2 - 3 - 4 - 5 - 6 目前的關係 / 剩下的連接選擇 2 - 1 3, 4, 5, 6 1 - 2 4, 5, 6 3 - 2 2 - 3 1, 5, 6 4 - 3 3 - 4 1, 2, 6 5 - 4 4 - 5 1, 2, 3 6 - 5 5 - 6 1, 2, 3, 4 1. 如果不是端點,而是中間點,一定會連到兩個點。 2. 一次只有兩個端點。 3. 2, 3, 4, 5 各有1次中間點和1次端點的機會。 1, 6 都是中間點。(因為123456的1,6已經當過端點了) 所以只能有3個解(兩次的解加原本的123456)。 為什麼只能有1次端點的機會。 以上表來說, 3剩下1, 5, 6連接選擇, 4剩下1, 2, 6連接選擇。 端點只會去掉一個點。所以3和4變成會有3個次當端點的機會。 3,4都是端點代表其他點都是中間點,都要一次扣2個點。 就算是最多選擇的1和6也只有4個點,不夠扣3次。 而2和5只有3個點,連2次都不能扣到。 所以至多只有1次端點的機會。 Bleed ========================================================= 作者: bleed1979 (十三) 看板: C_and_CPP 標題: Re: [ACM ] 11597-Spanning Subtree 時間: Mon Apr 5 17:10:56 2010 ※ 引述《jason3e7 (小綠)》之銘言: : 題號:11597 : 遇到的問題:題目看不懂? 不知道實際上那樹長什麼樣子 : 附上中文題目跟英文題目的連結 : 中文:http://zerojudge.tw/ShowProblem?problemid=d656 : 英文: : http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=27&page=show_problem&problem=2644 這題... 我的理解是這樣的。 找2個spanning subtree,這兩個spanning subtree彼此沒有連通的邊。 所以4個點可以是 解1: (1個點形成的subtree, 3個點形成的subtree) 解2: (2個點形成的subtree, 2個點形成的subtree) 所以總共2個解。 同樣的,6個點可以是 1. (1,5) 2. (2,4) 3. (3,3) 所以是3個解。 算到400你會發現一件很恐怖的事。 好,這題講解完了,就這樣。 Bleed -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.177.97
YesIam118:spanning subtree的定義不是每個點都要有連到嗎? 04/05 18:29
YesIam118:你舉的例子怪怪的 04/05 18:31
seedman:你的講解連same input都是錯的阿 XD 04/06 01:04
bleed1979:輸入4得2解,輸入6得3解,這題輸出就是n/2。 04/06 04:25
bleed1979:我想請問樓上兩位有那個是真的有send程式上去的。 04/06 04:26
bleed1979:我不敢說我的理解是對的,但我以我AC的想法來解釋。 04/06 04:26
LPH66:上一篇推文的 suhorng 應該是對的... 04/06 06:47
YesIam118:當然有AC囉 一看就知道答案是N/2 但重點在為什麼呢? 04/06 08:35
※ 編輯: bleed1979 來自: 114.32.177.97 (04/06 09:11)
bleed1979:原文已經增加篇幅。 04/06 09:12
※ 編輯: bleed1979 來自: 114.32.177.97 (04/06 10:12)
AstralBrain:你對題目的認知有點問題.. 04/06 13:38
AstralBrain:樓下LPH的解釋是對的 04/06 13:42
bleed1979:也許你對我解釋的認知有點問題。 04/06 14:48
※ 編輯: bleed1979 來自: 114.32.177.97 (04/06 15:39)
AstralBrain:你的spanning tree只有一直線的嗎 04/06 15:45
bleed1979:4個點為例,1連4,2連4和3連4這樣嗎? 04/06 15:55
AstralBrain:中間那個六個點的例子 04/06 15:55
AstralBrain:剩下的邊是(1,2)(1,3)(1,4)(3,5)(2,6) 04/06 15:55
AstralBrain:這樣也是spanning tree 04/06 15:56
bleed1979:6個點。1-2-3-4-5-6, 4-1-5-2-6-3, 5-3-1-6-4-2 04/06 15:59
bleed1979:請一個月內用任何方法舉出不與上述重複邊的生成樹。 04/06 16:00
AstralBrain:你都把邊用完了是要找什麼= = 04/06 16:03
AstralBrain:我沒說n/2不對喔 我是說解釋不對 04/06 16:03
bleed1979:只是覺得鑽生成樹不唯一的漏洞很無聊,討論是點和點連。 04/06 16:09
AstralBrain:誰在鑽漏洞了 04/06 16:10
AstralBrain:就說K6扣掉1-6-5-4-3-2和3-6-4-2-5-1後還是生成樹了 04/06 16:11
AstralBrain:你自己沒有考慮到其他的情況 04/06 16:11
AstralBrain:工作結束 回來多講一點.. 04/06 18:40
AstralBrain:你只說了這n/2條path的端點必需相異 04/06 18:41
AstralBrain:然後呢? n很大的時候一定可以構造出不重複的path嗎 04/06 18:41
AstralBrain:這樣根本什麼都沒有說明啊 04/06 18:42