---
# System prepended metadata

title: '[2023.02.19] 2023 SWERC Mirror'

---

# [2023.02.19] 2023 SWERC Mirror

> SWERC 2022-2023 - Online Mirror
> Contest link: https://codeforces.com/contest/1776



分工：
- 金刀：打模板
- 迺絜：？



> 今天的比賽比較不一樣，重諺代表 `NYCU_LoTaTea` 去比 PK 賽、迺絜大約遲到了 45 分鐘、我打完模板之後在廁所燒雞了 15 分鐘，所以理所當然的就沒打算顧 penalty 了。
> 我原本的打算是先把模板打完，讓迺絜到的時候能夠直接開題，於是我就先去把題本印出來，並在等待印題本的過程中打模板。不過因為太久沒打模板了（而且該剪指甲了），我花了 8 分鐘才敲完模板。
> 
> [name=SorahISA]



> 敲完之後刷新記分板發現 AHLF 都有隊伍開出來了，於是就大概看著範測寫完 A，然後去廁所燒雞。
> 
> [name=SorahISA]

- 0:15 pA Accepted (+0)



> 因為本來想著迺絜會回來，所以我就從後面到著看回來，直到上完廁所才發現隊友還沒到。
> 
> - N：很 ARC 的 DP 題，但是輸出是方案數取 $\log$ 感覺有點怪。
> - M：給一棵樹，輪流拔葉子，先手想最大化拔的 index 最大值。
> - L：給定 $p_a + p_b$、$m_a + m_b$、$a$、$b$，問 $p_a \cdot a + p_b \cdot b = m_a \cdot a + m_b \cdot b$ 有沒有非負整數解。
> 
> 回來之後因為 H 的人數最多所以先看 H，本來想說是跟 LIS 有關，不過範例畫不出來所以覺得是讀題出了問題。重看了幾次之後其實還是不太理解給的順序，但是看著範測理解出答案的 pattern 就寫掉了。
> 
> [name=SorahISA]

- 0:47 pH Accepted (+0)



> 迺絜來了之後我把 L 丟給他解，我去看 F。
> 
> - F：給定一張無向連通圖，請把邊著色使得只取任意一色的邊都不連通，但任取兩種顏色的邊都連通。
> 
> 直覺上就是把其中一個點孤立出來看，這樣就被分成是不是完全圖的 case 了。把構造方法寫下來跟迺絜講過確定是好的之後就直接開寫。
> 
> [name=SorahISA]

- 1:06 pF Accepted (+0)



> 接下來因為在台灣 ICPC List 裡面只剩 GL 有人開，所以我去看 G。
> 
> - G：給定一個長度 $2n-1$ 的 $\texttt{WB}$-字串，請找到任意一個 $x$ 使得至少有 $n$ 個 substring 包含恰 $x$ 個 $\texttt{W}$。
> 
> 直接 claim 答案是所有長度 $n$ 的 substring 中的最大值，不過被迺絜丟回來叫我先證明一下。
> 證明時一度以為自己在唬爛，不過最後發現最大值右邊的每個位置都可以當作右界，左邊的每個位置都可以當左界，所以至少可以找到 $n$ 個區間。
> 確定證明沒問題之後就快速的寫完上傳，順利的拿到 AC。
> 
> [name=SorahISA]

- 1:20 pG Accepted (+0)



> 迺絜也推出了 L 的判斷式，我在實作時少判斷了整除的條件，還好範測夠強才避免吃 penalty。
> 
> [name=SorahISA]

> 基本上把 L 的題目看成垂直直線的焦點，把點斜式列出來找整數解就做完了。
>
> [name=迺絜]

- 1:37 pL Accepted (+0)



> 之後，我去看了互動題 C、迺絜則是在想 B。
> 其中，迺絜的想法寫出來之後會變成區間 DP，不過因為每個位置的狀態都是 $(x, y, cost)$，我們一直卡在怎麼確定兩個狀態會可以直接被比較出來優劣性。
> 互動題我們嘗試構造先手跟後手的策略，先手的策略直觀上是取長到短，但還不確定選什麼區間會最好；後手的策略直觀上是讓剩下的區間長的越短越好。
> 
> [name=SorahISA]



- 2:20 嘗試模擬 pC

> 於是我們讓先手每次都取最長的區間的最左邊，直接寫 code 模擬之後發現反而是後手的策略在範例 2 就會爛掉，燒雞。
> 
> [name=SorahISA]



- 3:05 開始寫 pB

> 迺絜把式子推的差不多了之後就開始寫 B，我就去開剩下的題目來看。> 
> - J：會有 $100 \cdot 2^{100}$ 的點的大圖論題。
> - I：每次輪流取凸包上的三角形，目標是取的面積 $\le$ 一半，互動 game 題。
> - D：某種排程題。
> - K：期望值數學題。
> 
> DK 一點想法都沒有，我就從更多人開的 J 開始想。
> 
> [name=SorahISA]



> 把 J 的圖畫出來之後，會發現如果是樹，或是在只有兩種顏色的情況下答案都會很簡單，但是有三種顏色圖就會變的很混亂。
> 畫了許久之後發現我可以利用到 hypercube graph 的性質，也就是 $(v_x, v_y) \in E \implies |\text{popcnt}(x) - \text{popcnt}(y)| = 1$ 來縮減圖的大小。
> 做法是把所有相同 $\text{popcnt}(v_s) = cnt$ 的點縮成一個新點 $v_{cnt}$ 來一起 bfs，因為同色顯然 $(v_{cnt}, u_{cnt})$ 一一相鄰，而異色也會有 $(v_{cnt}, u_{k-cnt})$ 一一相鄰。這樣就可以對原圖的每個點建出 $k+1$ 個點再從所有 $v_0$ 出發找圖的直徑。
> 跟迺絜確認了想法沒問題之後就花了 13 分鐘收掉。
> 
> [name=SorahISA]

- 3:57 pJ Accepted (+0)

> 基本上因為我們推出來的狀態很複雜，所以好好小心實作花了一些時間。中間還有因為沒有好好把高度截掉導致範測出了一點狀況。後來好好把正確的高度還有 cost 算對以後就做完了。
>
> [name=迺絜]

- 4:37 pB Accepted (+0)



> 最後輪流想著 C 跟 I，我在 4:43 的時候 claim 說「每次切最小的感覺就會讓對手只能吃更大的」，在紙上畫了一些都感覺正確，但是證明不出來。
> 嘗試證明到一半，我發現已經 4:51，剩下不到 10 分鐘了，就決定先上去寫看看。
> 可惜的是因為對環狀的東西實作不熟，直到 5:01 才把 code 寫出來 .\_.
> 賽後上傳因為沒有改 `endl` 吃了一個 IDLE，改掉就拿到 AC 了 .\_.
> 
> [name=SorahISA]

- 5:01 pI Too Late (Idleness Limit Exceeded)
- 5:02 pI Too Late (Accepted (+1))



## 結果

- Rank: 92 / 1933
- AC: 7 / 14 (`AB...FGH.J.L..`)
- Penalty: 819



## 燒雞

- 最後一小時如果有 AC 題目又沒有累積著有想法還沒寫的題目，就應該要去積極的唬爛。
- 高中隊伍開了 `ABCD.FGHIJ.L..`，感覺到了強烈的實力差距。感覺就算加上重諺也只會讓我們開 B 更快，然後除了 I 可能還可以多過 C (?)
- B 的官解合併只有一行，我們少考慮了（或是考慮太多了）導致轉移式寫了三個超長的函式。實際上因為兩坨東西的最左跟最右一定是兩個斜直線，所以根本不用管合併的點，只要好好算 cost 並且透過最左最右的積木位置來判斷高度是否要截掉就好。


