---
# System prepended metadata

title: '[2023.02.18] 1st UCup, Stage 4: Ukraine'

---

# [2023.02.18] 1st UCup, Stage 4: Ukraine

> The 1st Universal Cup. Stage 4: Ukraine.
> Contest link: https://qoj.ac/contest/1106



分工：
- 金刀：FGHIJKLMN
- 重諺：ABCDE
- 迺絜：打模板



> 先從 F 開始看起（加最少邊使二分圖不能三著色），發現他答案一定 $\le 5$ 感覺可以判 case。
> 接下來 G 是經典的 Hamiltonian Path 問題，不過他的 $n$ 到 $24$ 又要算出全點對的答案，算了一下發現 $\mathcal{O}(2^n n^2)$ 不會過就丟一邊。
> H 完全沒想法先丟一邊。
> I 看到了數字只會增加至多一，於是想說先在外圍墊一圈數字讓他一定會加一，然後再去數有幾種右上到左下的輪廓線。
> 
> [name=SorahISA]



> 首先我打算先把題都看完，然後我大概看到 B 的時候發現計分板上 A 很多然開，於是就問了一下金刀，然後我就去寫 A 了
> [name=mmi366127]



> 接著重諺問我 A 直接 sort 是不是好的，不過想了一下之後看到範測 $(1, 2, 3, 4, 5)$ 是排成 $(2, 4, 5, 3, 1)$ 就知道想錯了，於是就直接 claim 由大到小左右交錯排就好。
> 
> [name=SorahISA]

- 0:25 pA Accepted (+0)



> 我接到重諺丟過來的 E，並且把圖論題 FGH 丟給迺絜想。
> 迺絜提到最多只會切兩段，我用全部 xor $=0$ 的 case 反駁掉之後發現應該不會切到超過三段。分析了幾種 case 發現只有在 xor 只有不到兩種可能的時候會無解。
> 途中因為用 `set.contains()` 跟打錯字（`i+2` 打成 `i+1`）吃了一次 CE 還有一次 WA。
> 
> [name=SorahISA]

- 0:37 pE Compile Error
- 0:37 pE Wrong Answer
- 0:38 pE Accepted (+1)



> 接著我繼續看題目，看一段時間才看懂 K，不過中間有穿插去想 F 和 I，然後 claim 了 K 是 SCC，但不確定是不是對的，所以就先去幫忙想 F 和 I。
> [name=mmi366127]



> 因為 F 的答案 $\le 5$，所以就打算一個一個 case 來判斷，之後因為「是二分圖」以及「$m \ge 2$」又把區間縮成 $[2, 4]$。
> 為了判斷答案是不是 $2$ 要找到有沒有 $K_{2,2}$ 存在，我們想了幾種方法：
> 1. 枚舉左邊每個點對，計算右邊交集，$\mathcal{O}(n^3 / 64)$ 太慢。
> 1. 因為之前印象中可以用 $\mathcal{O}(m \sqrt{m})$ 判斷 $4$-cycle，於是我就陷入了分塊地獄。
> 
> [name=SorahISA]



> 然後金刀丟了 J 給我，我證了他的答案只會是 $-1$, $n-2$, $n-1$
和 $n$，然後我會判 $-1$ 和 $n$ 的 case，但是 $n-1$ 的 case 不好判，比單純的動態逆序數對還麻煩很多的感覺，就想找多一點性質來用。
> [name=mmi366127]



> 接著我想了想，覺得 K SCC 的想法應該是沒有錯，然後就開始實作了，然後就過了。
> [name=mmi366127]

- 1:36 pK Accepted (+0)



> 接著我看迺絜分析了 D，然後繼續看了一下 J 跟 I，接著他慢慢發現好像題目其實蠻梗的。然後金刀就把他 AC 了。
> [name=mmi366127]



> 我們想知道如果直接把 `dis[i][j] % 2 == 1` 的邊連起來會怎麼樣，最後發現這好像就是解。
> 我寫了一個爛爛對拍發現好像沒問題就傳上去 AC 了。
> 可惜迺絜大約三個小時後離開了，沒辦法看到這個 AC。
> 
> [name=SorahISA]

> 如果一張圖是二分圖，那麼直接把`dis[i][j] % 2 == 1` 的邊連起來就做完了。
> 所以我就考慮一個奇環看看，結果發現要是有一個距離的 parity 不對，那個要是考慮加邊的話就勢必要改變一個原本沒有連邊的 parity。
> 反之，如果拔邊的話，因為在一個奇環上所以拔邊以後原本的 parity 關係也會被 flip。
> 根據上面這個觀察，不管怎樣直接連`dis[i][j] % 2 == 1` 的邊，然後驗證是否有解即可。
>
> [name=迺絜]

- 3:21 pD Accepted (+0)



> 接著我想了一個 F 的想法，把邊的 pair 用 sort 的，但被金刀發現 pair 數量太多，然後我又提出了可以用一個陣列去紀錄出現的 pair，然後金刀就發現其實最多只會有 $\mathcal{O}(n^2)$ 種 pair，所以複雜度最多 $\mathcal{O}(n^2)$，然後就做完了...
> 
> [name=mmi366127]

- 3:36 pF Accepted (+0)



> 直到最後我把數字的格子畫出來，才發現這樣就等同於右上到左下的路徑記數，然後就把想法交給重諺做完了 .\_.
> 中途一直想要從左上往右下做類似輪廓線的東西，或是二維的直升機抓寶，燒雞 QQ
> 
> [name=SorahISA]



> 接著我繼續想 J，但是沒有比較不毒瘤且沒有 TLE 風險的方法。然後就是用金刀的想法做 I 了，做一做就 AC 了
> 
> [name=mmi366127]

- 4:45 pI Accepted (+0)



## 結果

- Rank: 102 / 169 (Mirror)
- AC: 6 / 14 (`A..DEF..I.K...`)
- Penalty: 881



## 燒雞

- 金刀：
    - 感覺這場一直在嘗試 claim 東西，證明的時候也比較多在 brute force 看看有沒有反例，之後賽後補題應該多練習證明。
