Codeforces Round #557 (Div. 1) 簡要題解
A. Hide and Seek
枚舉起始位置\(a\),如果\(a\)未在序列中出現,則對答案有\(2\)或\(3\)的貢獻。
若\(a\)在序列中出現,找到\(a\)第一次出現的位置\(x\),則說明在\(x\)位置之前需要把\(a\)移動到\(a+1\)或\(a-1\)處,只需要判斷\(x\)后面有沒有\(a+1\),有沒有\(a-1\)。對每種數字記錄第一次和最后一次出現位置即可。
code
B. Chladni Figure
旋轉的角度\(k\)一定是\(n\)的約數。暴力枚舉約數判斷即可,復雜度\(O(n\sigma_0(n))\)。
code
C. Thanos Nim
結論是后手必勝當且僅當局面中的最小值個數超過一半,因為當最小值個數超過一半時操作必改變最小值,且操作后最小值個數不超過一半,而在最小值個數不超過一半時顯然存在一種操作策略可以不改變最小值,而使操作后最小值個數超過一半。
code
D. Palindrome XOR
令\(n\)為讀入的字符串長。顯然\(b\)的長度就是\(n\),且\(a\)的長度小於\(n\)。
枚舉\(a\)的長度\(m\),這樣就一共有\(n+m\)個\(01\)變量待確定,這\(n+m\)個\(01\)變量之間存在一些相等或不等的關系,同時還有一些變量被強制賦值,可以新建兩個點表示數值\(0/1\)后,把限制關系視作邊(相等邊權為\(0\),不等邊權為\(1\))建出圖,若圖中不存在奇環則答案為\(2\)的連通塊個數減\(1\)次方,否則答案為\(0\)。
復雜度\(O(n^2)\)。
code
E. Rainbow Coins
對每個\(i\)求出是否和\(i-1\)與\(i+1\)相同(\(2\)次詢問),可以將序列分割成若干段,保證相鄰兩端顏色不同。接下來需要求每一段的顏色,假設第一段的顏色為\(0\),第二段的顏色為\(1\),然后就只需要知道第\(i\)段和第\(i-2\)段的顏色是否相同就行了(\(2\)次詢問)。共計\(4\)次詢問。
code
F. Zigzag Game
首先按照劇本我們應該選\(\text{Bob}\),因為\(\text{Bob}\)才是實際意義上的先手。
這是一個二分圖博弈的模型,這個模型中關鍵的一點在於:求出二分圖某個滿足一定條件的匹配,接着先手就只要按照劇本沿匹配邊走就能\(\text{win}\)了。
考慮這個匹配需要滿足什么樣的性質。不失一般性地,假設\(\text{Alice}\)選擇了\(\text{Increasing}\)並選擇了一個左側節點。不是這種情況的話可以通過將邊權取反到達相同的結果。
假設博弈過程中存在連續的三次操作\(w \to x \to y \to z\),其中\(w \to x\)和\(y \to z\)是\(\text{Bob}\)走的,也即,\((w,x),(y,z)\)兩條邊在匹配中。此時我們的要求是在\(\text{Alice}\)走到\(y\)后,\(\text{Bob}\)能夠走到\(z\),也即\(val(x,y)>val(y,z)\),當然這里對\(val(x,y)\)也是有限制的,即\(val(x,y)>val(w,x)\)。
可知上述限制是對匹配的唯一限制。也就是說,匹配不合法當且僅當存在\((w,x)\in P,(y,z)\in P\)使得\(val(w,x)<val(x,y)<val(y,z)\)。
這是一個穩定婚配的模型,左側的每個點對右側點的偏好值與邊權負相關,右側的每個點對左側點的偏好值與邊權正相關。求出一組穩定婚配后按照劇本走就好了。