CF 1339 題解

snowycat1234發表於2024-11-06

CF 1339 題解

A Filling Diamonds

\(f_i\) 表示 \(n=i\) 時的答案.

若最左邊兩個格子豎著放一個菱形, 這意味著後面都只能橫著放菱形鋪滿, 僅有 \(1\) 種方案;

若最左邊兩個格子橫著放, 剩下的部分會構成一個子問題. 有 \(f_{i-1}\) 種方案.

綜上, \(f_i=f_{i-1}+1,f_1=1\), 則有 \(f_i=i.\)

B Sorted Adjacent Differences

考慮把原序列排序後折半, 穿插起來.

若排序後序列為 \(a_1,a_2,\dots a_n\),

則考慮構造 \(a_{\lceil\frac{n}{2}\rceil},a_{\lceil\frac{n}{2}\rceil+1},a_{\lceil\frac{n}{2}\rceil-1},a_{\lceil\frac{n}{2}\rceil+2},a_{\lceil\frac{n}{2}\rceil-2},\dots,a_{n},a_1\), 正確性顯然.

C Powered Addition

發現各個數字之間操作獨立, 貢獻獨立, 因此考慮貪心, 把每個數字抬升到它對應的字首最大值一定最優.

D Edge Weight Assignment

首先考慮最小化.

欽定任意一個非葉節點為根.

答案為 \(1\) 當且僅當所有葉節點高度層奇偶一致.

答案上界為 \(3\), 下面是構造性證明:

考慮將奇數層葉節點的父邊賦值為 \(1\) , 偶數層賦值為 \(2\) , 其餘賦值為 \(3\). 這不難發現是一種合法的構造.

注意到當葉子奇偶不同時, 無法構造使得答案為 \(2\), 因為 兩個數異或為 \(0\) 意味著這兩個數相等.

接下來考慮上界.

若多個葉節點連線一個父親, 則他們的父邊權一致.

由於值域無限大, 總能存在其他邊權互不相同的構造.

E Perfect Triples

一道找規律題.

\[1,2,3,\\4,8,12,5,10,15,6,11,13,7,9,14, \\16,32,48,17,34,51,18,35,49,19,33,50,20,40,60,21,42,63,22,43,61,23,41,62,24,44,52,⋯ \]

注意到第一行的數填滿 \(1,2,3\) , 前兩行填滿 \([1,15]\), 前三行填滿了 \([1,63]\).

但是看不出來進一步規律, 考慮把 \(a,b,c\) 分別拿出來.

\(a\) 的表如下:

\[1,4,5,6,7,16,17,18,19,20,21,22,23,24,\dots \]

發現只剩下了每個 \([2^{2k},2^{2k+1}-1],k\in\mathbb{N}\) 中的數.

\(b\) 的表如下:

\[2,8,10,11,9,32,34,18,\dots \]

沒啥規律, 我們把一行裡面的 \(b\) 單獨拎出來, 並且和第一個 \(b\) 做差量處理, 並用二進位制表示:

\[\textcolor{red}{00}\textcolor{cyan}{00}00\\ \textcolor{red}{00}\textcolor{cyan}{00}10\\ \textcolor{red}{00}\textcolor{cyan}{00}11\\ \textcolor{red}{00}\textcolor{cyan}{00}01\\ \textcolor{red}{00}\textcolor{cyan}{10}00\\ \textcolor{red}{00}\textcolor{cyan}{10}10\\ \textcolor{red}{00}\textcolor{cyan}{10}11\\ \textcolor{red}{00}\textcolor{cyan}{10}01\\ \textcolor{red}{00}\textcolor{cyan}{11}00\\ \textcolor{red}{00}\textcolor{cyan}{11}10\\ \textcolor{red}{00}\textcolor{cyan}{11}11\\ \textcolor{red}{00}\textcolor{cyan}{11}01\\ \textcolor{red}{00}\textcolor{cyan}{01}00\\ \textcolor{red}{00}\textcolor{cyan}{01}10\\ \textcolor{red}{00}\textcolor{cyan}{01}11\\ \textcolor{red}{00}\textcolor{cyan}{01}01\\ \]

從低向高每兩位都有相同的迴圈節, 去找到週期就可以了,

\(c\) 的規律不需要尋找, 使用 \(a \oplus b\) 即可.