模擬測試62


T1:

  先考慮樹的情況。

  DFS遍歷整棵樹,將每個兒子向自己連的鏈兩兩匹配。

  若有落單的點,就把當前節點的父鏈連進去,反之將父鏈傳上去。

  對於圖的情況,我們可以將一個點拆成許多點,保持邊不變,再對新建的樹進行上述過程。

  時間復雜度$O(m)$。

T2:

  考慮轉化題意。

  設原序列為$a$,對原序列開一個互逆數組$b$,$a$的字典序最小等價於$b$的字典序最小,考慮對$b$進行操作。

  這樣題意轉化為鄰項交換,交換的條件是兩個數的差不小於$k$。

  易發現若兩個數的差小於$k$,則這兩個數永遠不會被交換,也就意味着兩個數的相對位置固定。

  對於這樣的點對,從左向右連邊,跑優先隊列拓撲。

  但是邊的級別是$n^2$的,就把每個點向它右邊第一個大於它和第一個小於它並且差小於$k$的連邊。

  證明:

    假設有兩個不能交換的數$x$和$y$,$y$在$x$右側,又有另一個數$z$,位於$y$右側,並且$x$與$z$也不能交換,忽略其他數。

    若$(y>x \  and \  z>x) or (y<x \  and \  z<x)$,$y$與$z$的差一定小於$k$。

    若$(y>x \  and \  z<x) or (y<x \  and \  z>x)$,$x$與$z$直接有連邊。

    故上述方法正確。

  時間復雜度$O(nlogn)$。

T3:

  結論:最大流之和為所有邊邊權相加。

  證明:

    若使最大流之和最大,那么邊權小的便起的限制作用應盡可能小。

    由於每條邊將樹分為兩個部分,所以最小邊的限制作用至少起到過一次。

    將最小邊割斷,對剩下的連通塊重復進行上述過程。

    所以每個邊都被取到一次是最優的。

  就是$A+B \  problem$。

  時間復雜度$O(n)$。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM