清明時節雨紛紛,路上行人慾斷魂。
一年一度的JSOI,已在不覺中來臨。
無論是LGM神犇,抑或只是初一蒟蒻,盡在這不大的賽場中相遇——他們無不在用一行行代碼,譜寫出自己被OI所充實的青春。
【以上:僞文少】
Day 0
陰雨綿綿的下午,步入南理工,JSOI賽場。
與各路神犇聊了會天,看他們在黑板上寫FizzyDavid AK JSOI。
試機,一切順利。
頗爲滑稽的是,AC自動機的模板,我今天才完整寫出——先前不過是口胡罷了。根本原因,竟是有小道消息稱今年JSOI考字符串。
不僅詫異於djq_cpp曾經的不思進取【霧】。
另外,dtx一上Linux,就找到了遊戲的入口。——大抵是AK後消磨時光吧?
Day 1
抵達賽區較早,閒來無事,欣賞了一會兒二月蘭——無數淡紫的花朵盛開在林間,還頗有些浪漫氣息呢。
突發奇想,出了一道毒瘤線性基模板題:定義一束二月蘭的美麗值爲其中每一枝的美麗度的異或,現在某神犇要摘一束美麗值>=K的二月蘭送給……
開場,看T1,跳T1。
看T2,第一反應:55分是CF原題?然而我不會。看T3。
以爲它可做,想了一會兒,卻只發現了O(n ^ 3)的做法。
突然意識到T1的數據範圍好小……奇怪……狀壓dp,維護臺階!
寫完,測樣例,沒拍,寫T2 T3去了。
T2稍後才發現是一棵樹——於是55分貪心變成送分了。然而剩餘的45分……還是不會。
二分 + 數據結構?
沒敢想下去。推T3。還剩~2h45min,時間多着呢。
然而沉思良久,仍只會O(n ^ 3)。
代碼大致如下:
namespace subtask_35p //O(n ^ 3) dp solution
{
//... ...
}
namespace sol
{
void solve()
{
printf("DP on trees? FFT? Centroid deposition? I think it's related to link - cut - trees, yet I cannot come up with a single idea QAQ");
}
}
最後30min,想T3無果,放棄。玩畫圖 + 推數論,第一次在省選賽場上的考試竟這樣結束了。
賽後——
djq_cpp:“T2怎麼做啊……貪心,二分,然後?不會啊……”
某神犇:“T2線段樹維護一下就行了吧”
djq_cpp:”???!!!。。。"
其實有些後悔,將時間全花在T3上。不然興許T2就100分了呢。
終測成績,200(100 + 55 + 45)。不算超常發揮,卻也沒有崩盤。
T3三位神犇經鬆一鬆(卡常)後,O(n ^ 3)過了。
*FizzyDavid是九省一市唯一一名AK選手!Flag屹立不倒!
JS Rk 10。NFLS Rk 6。
突然想起自己是非正式選手。
於是打摜蛋,浪。
---------------------------------------------詭異的分割線----------------------------------------------------
賽後講題。
T3題解:
標算——LCT + 卷積 + 樹dp。
詭異做法——樹分治 + 卷積 + 樹dp。
卡常做法——鬆鬆鬆 + 樹dp。
djq_cpp:“?????!!!!!。。。。。"
然而依然沒有聽懂。
聽說明天考字符串?
Day 2
有了前兩天的經歷,去賽場的路便顯得平淡多了。
8:00,準時開場。
T1,剛看罷,只見題目描述極長——“省選顯然不會考顯然的模擬題,那麼,可以預見,這道題將會異常毒瘤”,我以爲。C = 1的50分貌似可做?又覺得不會這麼簡單,頓時起疑,於是先擱下。
T2,卻令人心生一種奧妙重重的感覺/*霧*/……
樹分治?FFT?等下,樹dp,35分,寫了。
時鐘,指向9 : 00。
T3 志糊竄(?)。期待已久的字符串,然而估計又是個毒瘤題。
不管了,SA + LCP無腦上!——咦?這題似乎可以推式子?——莫隊O(n sqrt(n) log(n))……
不覺間,9 : 45。新的可優化點遙遙無期——也不必再想了,就這樣寫吧。
10:30,SA & LCP完成。11:30,維護它們的數據結構完成,公式推完——還有三種分類討論,給人以一種“常數會炸”的感覺。
…………
眼看正午已至,值得放下調得正酣的T3,去寫T1的60分去。
//I soon give up
//I've come up with an O(n sqrt(n) log(n)) solution (with a relatively large constant)
//Yet my programming skill is too low to finish the code below
//Spending 3 hours, gaining 0 points
//...
//Hope in JSOI Round 2
//I' ll 'come back' next time! _0w0_
令人哭笑不得的是,將我這次JSOI收尾的,既不是一場逆襲,亦非平庸的發揮,而是以上一段有着”千言萬語,更於誰人說“的註釋。
策略崩。
賽後花絮:
未來女隊dxm: "T1是Dinic最大流麼?”
djq差點捶桌子。
csl神犇: "T3寫炸了“
djq: 您至少寫了T1正解啊……
要涼涼……
---------------------------------------------詭異的分割線----------------------------------------------------
寫作業,卻在寫完之前跑去打摜蛋了。//不知爲何,每次贏的時候都是1 4,只晉一級,慘慘
評講T2時,猛然發現T3其實可以構造一下笛卡爾樹 然後啓發式合併O(n log ^ 2(n))水過……近乎昏厥……
//代價是T2沒聽懂
T3正解O(n log n),強。
FizzyDavid 兩天標準分,強。
djq_cpp 95(60 + 35 + 0),暴力都沒打滿。
當天~rk 17。總排名掉了多少,未知。
壯志盡在南理工,策略失誤一場空。
總結:
總有人安慰我,”你才初一呢,考得不好也無妨,畢竟積累經驗。”然而有些事情,也該做了。
這次JSOI,自然收穫匪淺——一方面,有幸認識了來自JS的各路神犇,同時也見證了自己近兩年來水平的進步;另一方面,賽前的壓力,反倒促使我再過一遍似懂非懂的算法,竟首次真正完全理解了AC自動機、熟悉了FFT、平衡樹及後綴數組。
兩天總分295,總體還可以。然而Day 2的策略爆炸,仍是個不小的遺憾。
常言比賽最忌在一棵樹上吊死——然而,我總禁不住在發掘一道題“疑似可做”時,便鑽進去,沉迷其中,無法自拔了。
下次定要注意。
至於什麼算法上的疏漏——除卻網絡流仍需加強練習、以防誤以爲是不可做題外,其實,也就跟着學習節奏走吧——畢竟,考前,曾查漏補缺過呢。
SAM, LCT, 多項式;BSGS, 各種反演……一步一個腳印,慢慢來吧。
加油。
JSOI 2018 Round 2,希望不要重演Day 2的悲劇。
JSOI 2019,期待能創造輝煌。
加油!
OI,前路漫漫;好在,總有一盞燈,提示着我前進的方向。