# [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 看看有沒有反例,之後賽後補題應該多練習證明。