[Virtual] NERC 2021-2022

團練篇

前言

NPSC 團練的第三場,也就是最後一場。
這篇因為打到有點累了所以可能會有點偏紀錄性質。

Virtual

一開始高嘉泓先看到 C 有人開,

pC
給定三個平面上的點,求 Manhattan Steiner Tree。

我想了一下有一些 case,但高嘉泓說他的不用直接就上去寫了。
寫完我幫他測了一些邊界的 case,不過我們不確定可不可以輸出長度是 0 的線段所以我們就稍微改了一下傳上去,

14 pC +


接下來換我開剛剛讀完想好解的 D,

pD
給定兩個字串 $s,\,t$,對每個 $s$ 裡的字元都必須選擇一個分界點,並且把分界點前面都刪除,後面都保留。
問保留的結果是否可為 $t$。
測資數 $\leq 10000,\,1 \leq |s|,\,|t| \leq 30$

只要從後面枚舉,要是有一個時刻必須刪掉就紀錄,然後 greedy 配對就好。

18 pD +


下一個多開的是 L,

pL
給一張 $n$ 點 $m$ 邊的有向圖,以及一個給定的起點 $s$,
求出起點在 $s$ 終點在某個 $t$ 的兩條點相異路徑,$t$ 可以自己決定。
$2 \leq n \leq 2 \cdot 10^5,\,0 \leq m \leq 2 \cdot 10^5$

高嘉泓超強,想出用 DFS 然後一個點只能推一條路出去就做完了。

29 pL +


接下來還是跟著記分板走,所以我就先去看 J,

pJ
給定一個表格 $c_{ij}$,求出一棵二元樹滿足
$\sum_{i<j}c_{ij}d_{ij}$ 最小,其中 $d_{ij}$ 是 $i,\,j$ 在樹上的距離。
$1 \leq n \leq 200$

很顯然把 $c_{ij}$ 做二維前綴和方便查詢 cost 然後做個區間 DP 就好,
不過中間發現我一直少東少西 debug 花了一小段時間,然後還要構造那棵樹,
最後還是寫出來了,感覺花的時間可以再少一點點。

57 pJ +


下一題 F 是高嘉泓跟我說有很多隊做的,他看起來是數學題,

pF
給定一個序列 $a_i$,你要把他重排成一個序列 $b_i$ 滿足:

  • $b_1 < b_2 > b_3 < b_4 > b_5 < \cdots$
  • $b_2 < b_4 < b_6 < \cdots$

求出可能的排列數 $\mod 998\,244\,353$。
$1 \leq t \leq 2500,\,2 \leq \sum n \leq 5000,\, 2 | n$

一開始高嘉泓跟我說可能是數學題,但我後來想想其實只要記錄最後一個最大的是多少就能好好 DP,
題目很有良心把 $\text{mod}$ 設成質數可以算完直接除掉同樣數字數量階乘的模逆元,所以我就再上去寫了一題 DP,
細節處理出了小問題,不過其實想比寫的時間要多一些,

107 pF +


下一多人開的題目就是 I 了,

pI 互動題
有一個 $n\times m$ 的網格,裡面藏有兩格是寶藏,
你可以做以下兩種查詢:

  • DIG $x$ $y$:挖 $(x,\,y)$ 的格子並回傳有沒有寶藏。
  • SCAN $x$ $y$:查詢 $(x,\,y)$ 格子與兩個寶藏位置的曼哈頓距離和。

請用 $7$ 次查詢使得兩個寶藏的位置都有被挖過至少一次。
$2 \leq n,\,m \leq 16$

一開始高嘉泓好像想到了兩個三分搜 + $3$ 次的作法,
後來我突然想到兩個三分搜可以改成各 $3$ 次就好,共用其中一個點就變 $5 + 3 = 8$ 次了,
不過想到這裡我們就卡了很久,不知道要怎麼壓剩下的次數。

後來高嘉泓把式子寫開之後發現可以透過 $(1,\,1)$ 跟 $(1,\,m)$ 得到 $(n,\,m)$ 的答案,壓到 $7$ 次。
可是他寫的時候出了小狀況,所以我就上去用暴力建出圖的方法做完他的想法,
我真的不管幾次遇到純數學題都會燒成智障欸,到底要怎麼辦…

190 pI +


剩下的時間我們在全力做 E,因為 G 一臉看來我們是實作不出來的,

pE
你要把 $[0,\,l]$ 分割成 $n$ 個線段 $l_i$,滿足 $a_i \in l_i$,
求出 $\max |l_i| - \min |l_i|$ 最小的其中一組解。
$1 \leq n \leq 10^5,\,2 \leq l \leq 10^9,\,0 < a_1 < a_2 < \cdots < l$

一開始我列了一個看起來很像假解的不等式,然後發現他真的是假解,
後來過了很久一段時間,我們就想到可以二分搜最短長度 $k$,因為感覺他的解會是比較好的,
然後就可以二分搜差值 $d$,最後構造解,
二分搜最短長度好解決,但二分搜差值我們想了很久,
原本有個 greedy 的作法可是他的實作複雜程度太高了,所以我們後來就想到把所有長度都先減掉 $k$,
然後就是找到一組解 $b_i$ 滿足
$a_i - i \cdot k \leq b_i \leq a_{i + 1} - i \cdot k$、$0 \leq b_i \leq d$ 跟 $a_n = l - n \cdot k$
歸出來之後我們就發現對合法範圍 greedy 就變得超好做,所以就寫下去了。

239 pE -1


我改了個無關緊要的東西就再傳了一次。

240 pE -2


後來我生幾筆就生出爆掉的了,
後來我發現我的 $d$ 在二分搜的時候忘記限制那些範圍,所以就加了一些範圍然後多測幾次,

261 pE +2


可惡,斷了一發的節奏(X

檢討

其實這場除了 I 跟沒有實作大噁題 G 都還蠻順的,
其次就是有些可以想更快,實作更穩,
完全沒想到 NPSC 會跟這場差這麼多。

可能我太笨了吧,我,這個 OI 不會也打不起 ICPC 的笨蛋,真的需要加強數學。