UOJ460 新年的拯救計劃
\(n\) 點完全圖。選出儘量多生成樹。輸出方案。 \(n\le1000\)。
考慮上界,總共有 \(\frac{n(n-1)}{2}\) 條邊,也就是最多可以分成 \(\frac{n}{2}\) 棵樹。
嘗試證明這個上界可以達到。我們考慮歸納法,假設 \(n = 2k\) 可行。
考慮 \(2k + 1\),我們可以將每棵生成樹選一個不同的點連向 \(2k + 1\),考慮到只有 \(k\) 棵,顯然是夠的。
考慮 \(2k + 2\),由 \(1 \sim k\) 連向 \(2k + 1\),\(k + 1 \sim 2k\) 連向 \(2k + 2\),然後再加一棵生成樹,由 \(1 \sim k\) 連向 \(2k + 2\) 和 \(k + 1 \sim 2k\) 連向 \(2k + 1\),同時連 \(2k + 1\) 和 \(2k + 2\)。
這是一個構造的方法。這題就完了。
CF1558C Bottom-Tier Reversals
首先觀察性質:位置的奇偶性不會改變,所以如果一開始奇偶性就錯了肯定不行。
接著我們需要確定一個大體思路,如何做排序?由於是對字首操作,我們考慮倒著往前一步步還原。
所以我們現在先考慮如何把最後兩個變成 \(n - 1, n\),觀察最終的長度約束,如果我們能在 5 步內完成,那麼這個問題就解決了。
第一步:找到 \(n\),使其變成第一個。
第二步:找到 \(n-1\),使 \(n\) 變成 \(n-1\) 前面的元素。
第三步:翻轉使得 \(n-1\) 第二個,\(n\) 第三個。
第四步:翻轉使得 \(n\) 第一個,\(n-1\) 第二個。
第五步:翻轉使得 \(n\) 最後,\(n-1\) 倒數第二。
然後就順利解決了這道題。
P6892 [ICPC2014 WF] Baggage
神仙構造。
首先看到這種題肯定是要手玩小資料並且猜下界,根據樣例不難猜出下界是 \(n\)。
證明下界分兩步,首先是證明不存在更小的,其次是構造一個。
我們先考慮證明不存在更小的,觀察題目的性質發現,如果我們記相鄰兩個位置相同的個數為 \(\phi\),則我們從 \(0 \to 2n-1\),由於每次最多新增兩個且第一次最多新增一個,所以至少 \(n\) 次。
根據這個,我們可以手玩出 \(n = 4\) 的情況:
進一步,我們嘗試去歸納 \(n\) 更大的情況,我們發現可以這樣做:
剛好 \(n\) 次,但是這裡要求存在使得只往前移兩位的方法,所以 \(n-4 \ge 4\),意味著我們需要自己手玩 \(n = 3,4,5,6,7\) 的情況。