1. 程式人生 > 實用技巧 >[Other]FJOI 2020 遊記

[Other]FJOI 2020 遊記

我的計數水平是外國人水平。

Jun. 15th ~ Jun. 21th

  • 無限頹廢,除了 JOI 2020 Final 之外基本沒做任何題

  • 週六(Jun. 20th)是會考,FJ 因為聯考和會考衝突而改成下週四、五的 FJOI

Day [-2,0]

死豬不怕開水燙,省選越近我越浪。

  • 除了 AGC046 之外,還是沒做任何題

  • Day 0(Jun. 24th)到 SDFZ 報到並試機

  • 試機的時候我前面的 nealchen 敲了一個 FFT,我敲了一個 SAM

  • 回賓館的時候寫了 SA 和 FFT

  • 同時瞭解到了今年 FJOI 改用 OJ 提交,試機體驗還行

  • 回想起去年打錯考號,那感覺真是可怕

Day 1

  • 看到題面,發現還是熟悉的 FZU 排版,還不寫記憶體限制

我:三題的空間限制分別是多少?
工作人員:不做回答。

  • 感到非常毒瘤

  • T1 大概是一個簡單的拆點費用流,看 \(2\times10^4\) 的規模不知道能不能過,但覺得沒有其他做法了,直接碼上 EK

  • 多測不給資料組數範圍,再次感到毒瘤

  • T2 大概演算法是 Tarjan + 線段樹合併 / 啟發式合併

  • 看著 \(5\times10^5\) 的範圍,由於 ML 未知,忍痛放棄了線段樹合併

  • 兩題都過樣例的時候大概 9:30 多一點

  • T3 是一個排列計數題感覺到會非常難

  • 一看到 \(n=1,2,3\)

    的時候答案為 \(0\)\(n=4\) 的時候答案為 \(2\),試圖把符合條件的兩個排列找出來妍究性質

  • 但由於缺 (xian) 乏 (ma) 經 (fan) 驗,決定正經推導

  • 但快 11:00 的時候還是隻會一個 \(O(n^3)\) 的 DP

  • 可第一檔就是 \(n=5000\) 的,辣雞部分分,毀我青春

  • 根據經驗,先去檢查前兩題,先把 T2 暴力拍上了

  • 然後回來搞 T3,還是做不出來

  • 再回去 T1,暴力都不好寫,就亂按了幾個肉眼可觀察的小資料

  • 再去搞 T3,還是做不出來

  • 只剩 5min 的時候,發現 T1 鍋了,一組 \(n=4,m=6\) 的資料過不去

  • 然後陷入極端自閉狀態

  • 然後把 \(n\) 改成 \(6\) 之後竟然就過了,立刻意識到我是不是哪裡 \(n\)\(m\) 寫錯

  • 最後不到 2min 的時候查出來

  • 出考場的時候感覺自己整個人都要退役

  • 聽到粉兔切了 T3 之後,更感覺自己要退役

  • 直到知道同校選手和 FZYZ 的 nealchen 和 Lagoon 都不會 T3 最低檔暴力之後,心裡才比較平衡

  • 中午就 T3 在 vuq 發起了激烈討論,看到 EI 的回答,感受到我的組合計數水平是外國人水平

  • 吃完飯下午看 result,T1 寫 EK 被卡掉 \(30\) 分,聽 Lagoon 說寫多路增廣就過了

  • 同時聽說 Lagoon T2 寫的線段樹合併(要 \(512\) MB)沒有被卡空間

  • 當天結束之後,綜合排名 \(2\rightarrow4\)

  • 當日最高分 Lagoon \(210\)

  • 晚上在賓館打了一個 LCT

Day2

  • 昨晚半夜醒來了一段時間

  • 看到題面,還是一樣不寫 ML

  • 看完 T1 覺得是一個斜率優化 + 凸優化,沒有具體 DP 式子,先看看後面兩題

  • 再看 T2 覺得好像很可做,但試推了幾分鐘沒推出什麼,就放一邊

  • 再看 T3:這題是不是 CF 原題 弱化版???(原題需要動態加數並強制線上)

  • 不知道怎麼回事今天採取了三題同時做的策略

  • T1 想到了怎麼 DP 之後感覺化式子和維護凸殼都比較煩,先放著

  • 然後腦補了一下 T3 做法,發現需要寫一個動態開點的打標記線段樹,由於昨天 T2 Lagoon 沒被卡,就認為這題空間 512MB 可過,先寫了讀入部分

  • 然後嘗試開始推 T2,又是計數題,大概是求一個 \(nk-2(k-1)\) 邊形的 \(k\) 角剖分(剖分成 \(n\)\(k\) 邊形)方案數

  • 一開始嘗試把 \(n-1\) 條切割線無序轉有序之後列舉第一條線

  • 然後推了 20min 左右發現有點假,去寫了一部分 T3

  • 然後又想到了轉化成 \(n\) 個節點的 \(k-1\) 叉樹計數

  • 試圖立即使用 prufer 序列計數,但推到一半發現沒考慮到子節點位置的影響,再次假掉

  • 然後寫出了生成函式:\(F(x)=xF^{k-1}(x)+1\),這方程解個榔頭

  • 後面想到了加一堆葉子把子節點不滿的兒子個數湊成 \(k-1\),然後感覺就能 prufer 了,然而寫一發,過不去樣例

  • 然後再去寫了一部分 T3,順便寫出了 T1 的 DP 轉移式

  • 然後回到 T2 修鍋,發現我沒注意到轉成無根樹之後原來的根的度數是 \(k-1\) 而不是 \(k\),並且子節點之間沒安排順序

  • 修了這個鍋之後通過了樣例,然後把 T3 寫完了,這兩題都和暴力拍上了

  • 可現在比賽時間只剩 1h 多一點了

  • 嘗試寫暴力 DP 驗證凸性,可 \(O(n^3)\) 因為一個減號打成加號調到自閉

  • 我開始寫正解的時候已經 \(11\)\(20\) 幾分了

  • 兩個陣列互相轉移的斜率優化大 DP 轉移對著暴力程式照抄,強行 rush,11:45 左右寫完

  • 可在最後的時間裡面這個 DP 沒有調出來,就交了個 \(O(n^3)\),鬼知道有多少分

  • 還是一樣,出來的時候感覺整個人都要退役

  • 認識的人也只有 nealchen 和 Lagoon 寫出來 T1

  • 中午還是一樣,就 T2 這個計數題在群裡激烈討論

  • EI 說解 \(F(x)=xF^{k-1}(x)+1\) 這個方程可以用拉格朗日反演,再次感受到我的多項式水平也是外國人水平

  • 下午回 SDFZ,result 咕了好久

  • T1 果然一分都沒拿到,T2 掛了 \(60\) 分,懷疑是多測每次分段打表階乘導致 TLE,不給資料組數範圍極度差評

  • 不過 \(140\) 竟然混到了當日 rk \(1\)

  • 無論如何,接下去提升一下計數水平,NOI 加油吧