1. 程式人生 > >AT2134 Zigzag MST 最小生成樹

AT2134 Zigzag MST 最小生成樹

p s 得到 zigzag targe 不難 org www 代碼 遞推

正解:最小生成樹

解題報告:

先放下傳送門QAQ

然後這題,首先可以發現這神奇的連邊方式真是令人頭大,,,顯然要考慮轉化掉QAQ

大概看一下可以發現點對的規律是,左邊++,交換位置,再仔細想下,就每個點會連上相鄰兩點,也就相鄰兩點會通過另外一個點連邊

首先可以發現加到後來已經是麻油意義的了,想下kruscal的意義,當兩條邊的兩端是一樣的那顯然權值大的那條邊麻油意義的,就是說每次最多加n條邊

這時候再結合prim,可以發現我們每次加入一個不在聯通塊的點的時候我們一點也不關心它和哪個點相連的,只要知道和聯通塊的最短距離多少就好

所以如果有(a,b,c),(b,a+1,c+1),考慮到ab早晚在一個聯通塊中的,所以可以直接當做是(a,a+1,c+1)

不難想到這樣把所有邊都處理完之後得到的就是一堆[(a,a+1),w]的邊了(這兒這麽寫的意義是說a和a+1是固定的然而對應了很多w

於是再遞推兩遍(考慮到環所以是兩遍呢QAQ)得到所有(a,a+1)唯一的w,這樣就變成了一棵新樹,再跑遍最小生成樹就好QAQ

等下放代碼QAQ

AT2134 Zigzag MST 最小生成樹