Re: [ACM ] 11597-Spanning Subtree

看板C_and_CPP作者時間15年前 (2010/04/05 17:10), 編輯推噓9(9020)
留言29則, 5人參與, 最新討論串2/8 (看更多)
借圖用一下 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

04/05 18:29, , 1F
spanning subtree的定義不是每個點都要有連到嗎?
04/05 18:29, 1F

04/05 18:31, , 2F
你舉的例子怪怪的
04/05 18:31, 2F

04/06 01:04, , 3F
你的講解連same input都是錯的阿 XD
04/06 01:04, 3F

04/06 04:25, , 4F
輸入4得2解,輸入6得3解,這題輸出就是n/2。
04/06 04:25, 4F

04/06 04:26, , 5F
我想請問樓上兩位有那個是真的有send程式上去的。
04/06 04:26, 5F

04/06 04:26, , 6F
我不敢說我的理解是對的,但我以我AC的想法來解釋。
04/06 04:26, 6F

04/06 06:47, , 7F
上一篇推文的 suhorng 應該是對的...
04/06 06:47, 7F

04/06 08:35, , 8F
當然有AC囉 一看就知道答案是N/2 但重點在為什麼呢?
04/06 08:35, 8F
※ 編輯: bleed1979 來自: 114.32.177.97 (04/06 09:11)

04/06 09:12, , 9F
原文已經增加篇幅。
04/06 09:12, 9F
※ 編輯: bleed1979 來自: 114.32.177.97 (04/06 10:12)

04/06 13:38, , 10F
你對題目的認知有點問題..
04/06 13:38, 10F

04/06 13:42, , 11F
樓下LPH的解釋是對的
04/06 13:42, 11F

04/06 14:48, , 12F
也許你對我解釋的認知有點問題。
04/06 14:48, 12F
※ 編輯: bleed1979 來自: 114.32.177.97 (04/06 15:39)

04/06 15:45, , 13F
你的spanning tree只有一直線的嗎
04/06 15:45, 13F

04/06 15:55, , 14F
4個點為例,1連4,2連4和3連4這樣嗎?
04/06 15:55, 14F

04/06 15:55, , 15F
中間那個六個點的例子
04/06 15:55, 15F

04/06 15:55, , 16F
剩下的邊是(1,2)(1,3)(1,4)(3,5)(2,6)
04/06 15:55, 16F

04/06 15:56, , 17F
這樣也是spanning tree
04/06 15:56, 17F

04/06 15:59, , 18F
6個點。1-2-3-4-5-6, 4-1-5-2-6-3, 5-3-1-6-4-2
04/06 15:59, 18F

04/06 16:00, , 19F
請一個月內用任何方法舉出不與上述重複邊的生成樹。
04/06 16:00, 19F

04/06 16:03, , 20F
你都把邊用完了是要找什麼= =
04/06 16:03, 20F

04/06 16:03, , 21F
我沒說n/2不對喔 我是說解釋不對
04/06 16:03, 21F

04/06 16:09, , 22F
只是覺得鑽生成樹不唯一的漏洞很無聊,討論是點和點連。
04/06 16:09, 22F

04/06 16:10, , 23F
誰在鑽漏洞了
04/06 16:10, 23F

04/06 16:11, , 24F
就說K6扣掉1-6-5-4-3-2和3-6-4-2-5-1後還是生成樹了
04/06 16:11, 24F

04/06 16:11, , 25F
你自己沒有考慮到其他的情況
04/06 16:11, 25F

04/06 18:40, , 26F
工作結束 回來多講一點..
04/06 18:40, 26F

04/06 18:41, , 27F
你只說了這n/2條path的端點必需相異
04/06 18:41, 27F

04/06 18:41, , 28F
然後呢? n很大的時候一定可以構造出不重複的path嗎
04/06 18:41, 28F

04/06 18:42, , 29F
這樣根本什麼都沒有說明啊
04/06 18:42, 29F
文章代碼(AID): #1BkQaZw8 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1BkQaZw8 (C_and_CPP)