11.9 Refact.ai Match 1 (Codeforces Round 985)
Solve : A~F (6/9)
Rank : 94
Rating : \(2212+136=2348\)
Perf : 2756(原來演算法)2723(準確值)
發揮評價:Good+
感謝廣義 Chinese Round()愉快上分。
這場 C 和 E 各一發罰時,E 吃完之後迅速發現自己的做法問題。
F 想清楚了再開始寫,沒有產生罰時。如果能更快一點就更好了。
CF2029D
給你一個無向圖,其中有 \(n\) 個頂點和 \(m\) 條邊。
您可以執行以下操作:
- 選擇三個不同的頂點 \(a\)、\(b\) 和 \(c\),然後對每條邊 \((a,b)\)、\((b,c)\) 和 \((c,a)\) 執行以下操作:
- 如果該邊不存在,則新增該邊。相反,如果存在,則刪除它。
當且僅當該圖沒有邊,或該圖是一棵樹時,一個圖才被稱為酷圖:
最多進行 \(2\cdot \max(n,m)\) 次操作把圖變成酷圖,可以證明有解。
Solution:考慮把所有不連 \(1\) 的邊透過第三個選 \(1\) 清除掉,最後必然剩下一個菊花和一些孤點。
考慮如果菊花為空,直接結束,否則用菊花的一條邊把剩下的孤點連起來。
CF2029E
對於兩個整數 \(x\) 和 \(y\)(\(x,y\ge 2\)),當且僅當 \(x\) 可以透過下面的操作變換為 \(y\) 時,我們才說 \(x\) 是 \(y\) 的生成器:
- 選擇 \(x\) 的因數 \(d\)(\(d\ge 2\)),然後將 \(x\) 增加 \(d\)。
現在,凱文給出了一個陣列 \(a\),它由 \(n\) 個互不相同 \(\ge 2\) 的整陣列成。
你必須找到一個整數 \(x\ge 2\),使得 \(x\) 是序列所有數的生成器,或報告無解。
首先發現 \(2\) 可以產生所有偶數(進一步的,所有合數)
而任何奇數會一步變回偶數,猜測只需要選 \(2\),故不能有質數。
顯然,不會這麼簡單。
有某個樣例,我們知道可以有一個質數(兩個以上絕對不行),只當這個質數可以生成所有數列中的數。
現在就剩判斷這個質數能不能生成了,直接 bfs 顯然超時。
考慮如果是偶數,\(\ge2p\) 即可,如果是奇數,最後一步一定是偶數生成的,這個偶數最大為它減去最小質因子,於是預處理後暴力判斷即可。
CF2029F
給定一個環,邊有紅藍雙色,詢問是否任意兩點間都存在一條顏色迴文路徑(可以不簡單)
先特判某一種顏色出現次數大於等於 \(n-1\) 的為 Yes。
這種題目,顯然考慮手玩樣例來找找規律。
發現樣例裡所有奇數都有解,大膽猜測由於奇數對路徑奇偶性沒有限制,可能全部有解,於是嘗試手玩一些證明這個結論。
但是被 RRRBB
卡掉了,\((1,4)\)(從零標號)沒有。
為啥沒有?因為路徑第一步必然是 R
最後一步必然是 B
,包沒有的。
這個很有啟發性:環中不能同時存在 RR
和 BB
,這個結論感覺方向很對,現在變成單個 R
和連續 B
段交替了。(考慮兩種顏色反轉不影響答案)
發現由於路徑可以不簡單,B
連續段只和奇偶性有關,可以等價為長 \(1\) 或者 \(2\)。
發現當 B
連續段長偶數時候,從兩側出的 B
段奇偶性相同。
於是出現兩個偶數 B
段就墜機了。
同時由於 ABABAB
也無解,發現沒有偶數段也墜機了,具體可以兩邊一起走,發現有時它們總得向同一方向走,無法匯合。
合理猜測,單個偶數段一定有解因為無解情況太多了。
確實如此,證明也考慮兩個一起走,把一個調到偶數段旁邊之後,一個跳過偶數段,另一個走個來回,然後就發現它們能匯合了。