JSOI2022 游記


\[\newcommand{\son}{\mathrm{son}} \]

原標題「JSOI2022 郵寄」,但考慮到其實不寄,就不裝了。

原摘要「麻了。」,指贏麻了(確信)。

前情提要:NOIP 略微有一點寄。當時考完覺得炸沒了,但那只是當時的錯覺。

day -? - ?

由於疫情原因,省選在 nfls 旁邊的華山飯店舉行,而且用筆記本電腦。但是筆記本外接顯示器、鼠標、鍵盤,那筆記本不就只起到主機的作用嗎?那為啥不直接買台式機呢,應該更便宜吧,很是迷惑。

突然得知只能用 noilinux,rnm 退賽!CSP 和 NOIP 只能用 windows,現在擱這又只有 noilinux,這不糊弄鬼嗎?還好升級到了 2.0,不然 vim 那玩意用的真是令人發抖。草率學了一下 vscode,配置一鍵編譯啥的就不管了,將就着用吧。。。

day -1 - 2022.4.14

除了頹廢什么也不想做😁。

像個寄擺一樣。

看了些 loj 輕小說,怎么這么鴿?

day 0 - 2022.4.15

今天沒去學校。打了幾個板子。

下午去地方試機,還算好用。

祝大家考出好成績,*** 必勝(確信)。

day 1 - 2022.4.16

今天心情終於好了一點,不然游記就鴿了(天津霧)。

早上又到的很早。

進考場。真的很想用筆記本!垃圾鍵盤回車多出來一截,把 |、\ 的位置占了。

說 8:20 發題目,但當時我看到已經超過 8:20 了,這不是糊弄鬼嗎(你糊弄鬼嗎?你這不糊弄鬼嗎?)?哦原來是電腦快了 5min,各電腦時間差還不一樣,真快樂。

讀題。T1 大模擬是嗎,那可以罵人嗎?T2 看起來很像點分治(笑),但是 n 只有 200,很奇怪。T3 看完不是很有感覺,腦子很亂,像雪糕,像肉餅。

草,不想寫 T1。想了一會兒 T2,感覺可以枚舉最小點和最大點,和最小值,然后把最小值分成 O(n) 段,求什么一次函數的積什么的,還要套個點分治。tnnd,今天題怎么這么煩?

摸摸基基 30min,想了個寂寞。開寫 T1。寫了 1h 寫完,感覺復雜度不是很對。不管了,應該不會卡,ccf 這人能處。

T2 好像不要點分治。就是套個結果為多項式的 DP 然后插值求前綴和?但好像無論如何都不低於四方,沒多少分,擺爛。

卧槽。竟然讀錯題了??之前以為是差恰好等於 K,結果是不超過 K?不過差分轉化一下反而是前者更弱(笑)。

印象中想了好久,似乎想到了 K 減 K - 1,這不就是前幾天模擬賽那個連通塊容斥 trick 的弱化嗎,我還沒補 hhh。那不就直接分段,然后跑 O(n) 次多項式 DP 嗎,復雜度跟背包 DP 一樣,是平方。這樣就有 70pts 了,剩下 30 狗都不想。

此時還剩 2h,不過能拿到 70 也是好的,今天看起來有點毒瘤(不確定)。分段的部分有點煩,其他還好。復雜度好像不是背包,還更弱?有點奇怪。寫到還剩 40min 調出來了,測了一下我自以為的極限數據——鏈,0.5s,starfish。

T3 前 8 分狀壓 DP 狗都不寫的好嗎?如果會性質 C 就牛逼了,可惜會不得。預想着寫掉 A,然后把 B 的 50% 拿掉。可是 A 寫不完了,報警啊,你他媽怕什么?有點心疼地把未寫完的 A 的 if 里加了 && 0。那就剩 12 了,總共 182 有點寄。

第一個與我交流的是 tzc,他過了 T2 還過了 T3 大樣例,我只能說我真的寄了。不過 djq 沒切掉 T3?很震撼。出來問了一圈,發現大家好像都沒我高,那看來並沒有發揮失常,只是 tzc 太強了/bx。

回家發現 T1 與某個人兩年前出的題一樣,改了一下交上去 WA 了。原來是 \r 的問題,嚇得不輕😣。以及 T1 復雜度並沒有問題,倒是空串可能會掛。不過好像沒人判空串,那有空串的話出題人不是沒🐎了嗎?

反轉了,T2 🐎作的盧飛快。

反轉了,T1 空串不會掛,s[0] = '\0'。

反轉了,djq T1 掛了。

反轉了,T3 其實有 20pts,我以為是 {B} - {A},實際是 {B}。

反轉吧,都反轉吧,讓這世間一切事物統反轉盡了呵。

day 2 - 2022.4.17

游記一向寫不好,尤其是像今天想寫的事情太多太瑣碎的的時候。

昨天考的有點好,所以早上做了一些心理建設,試圖使得今天不要飄。不過說實話考場上(不僅是 OI)的話我幾乎沒有飄過,大多都是因為卡題導致的心態爆炸而寄掉。

進考場,遂打了一下 33 行的板子。發題目后瞄了一眼 T1,感覺又是個萌萌莫反題?是不是可以隨便切呀/cf🤤。T2 感覺很鬼畜,這個規則需要仔細看才能讀懂,就先不管了。T3 也感覺很鬼畜,似乎跟 CSP-S2019 day1T3 那個毒瘤題挺像的。

對題目有了個粗略的印象,但沒完全有。那就只能想 T1,畢竟 T1 肯定要做出來吧,不過 T1 你過啥題啊,不過 T1 你打錘子啊?

莫反。注意到是求若干若干集合的交,交也是能容斥成並的。但是好像要求「互質於若干個質數的乘積的數的個數」這種東西,仿佛並不是乘積太大答案就為 0 的,仿佛上不封頂,那真的可做嗎?正難則反然后是個正常的容斥,不過好像跟之前的是等價的。哎那我就很好奇,這個題真的可做嗎???

不過我一直自詡為數論大師,自然有做出這個題的信心。想了一會兒,感覺不可 polylog,倒是可以有 \(\pi(\sqrt .)\) 的 mask 做法。那是不是就是個 or 卷積?超,轉反了,之前聽袁神的講座說絕對不可能考 fwt,這下被反向奶了。不過還好我粗略地學過集合冪級數,這種 sb 東西隨便寫吧。況且這也不是 fwt,而是 fmt(確信),甚至是容斥、高維前綴和(篤定)。

這個時候比賽開始已經 40min 了,我承認我當時認為對於一個 T1 而言,想這么長時間有點白給。事實上考完發現跟 wjz 相比算快的了(無嘲諷之意)。代碼還算好寫,到 1.5h 時過了兩個小樣例。等等,大樣例呢?rnm,退錢!

不懂,這么難拍的一個題,為什么還不給大樣例?ccf 真是搬起鵝卵石、雨花石、青金石、鑽石、螢石、鐵礦石、黑曜石、花崗岩、基岩砸自己的腳。算了,先 skip,等后面忙完了干瞪眼(重量級 flag)。測了一下極限數據,跑了 1.4s,對取模進行了進一步卡常變成了 0.8s。這時候大概是 1h40min。

接下來把 T2 和 T3 稍研究了一番。T2 最終要把括號變成啥樣,不就是 ((((...)))) 嗎?不懂整那么復雜干什么,很是迷惑😵。建一棵樹,操作二說明子樹順序不重要,操作一就是令 \(\son_a\gets \son_a\cup \son_b\cup\{b\},\son_b\gets\varnothing\),看起來還算比較可做。T3 就不一樣了,完全感覺不弱於 CSP2019 的 d1t3 啊(不確定,瞎猜的)……

想了想 T2,猜了個結論(其實可能已經證明了),就是一定是從上層往下考慮,每次致力於把該層合並成只剩一個點,多下來的下放到下一層。因為這樣的策略看起來可以包含所有情況。那么 x0y1 就是送的貪心了吧,x1y1 分析一下也不是很難,也是直接貪。於是在 vscode 里寫下了這樣的代碼:

if(X == 0 && Y == 0) { // As a gift.
    puts("0");
} else if(X == 0 && Y == 1) { // Also as a gift.
    
} else if(X == 1 && Y == 0) { // Why is this problem so hard? Life is hard.
    
} else { // Not very hard.
    
}

並准備把除了 x1y0 都填上。這時候可能大概已經 2h30min 了,還剩 2h。但是由於這兩部分太好寫了,寫 + 調只花了 20min,寫完是還剩 1h40min。但是 ccf 非常可惡,它甚至沒有告訴我 x y 四類各有多少分……這就很難受,如果不把 x1y0 做出來就還要繼續寫部分分,我不是很想(小 c 震怒!)。於是決定接下來的時間就繼續想 x1y0 吧,畢竟感覺 x1y0 比 T3 的 poly 做法可做多了。

想了不少時間想出來了(做法就不講了),大概是還剩 1h10min 的時候。忘了當時的心情了。當時把這一檔的注釋改成了 // Why is this problem so hard? Life is hard. (upd: Not very hard in fact.)。寫又花了 30min,到還剩 40min 的時候寫 + 調完。想測一測正確性,又到了大無語時間……x0y1 和 x1y0 分別給了巨小的樣例(答案是 1,就問你還有話說),x1y1 的樣例雖然大但是是 ()()()()()()()...,我真的佛了,這不就相當於沒有樣例嗎。這玩意也沒法拍,只能利用剩下來的時間把 T1 T2 一起干瞪眼咯。

擺了 10min 的爛(大腦一片空白),還剩 30min,決定開始瞪 T1。突然發現一件事:T1 的樣例好像沒有超過 \(\sqrt{2000}\) 的數!!!草,我立刻將樣例 2 的一些質數(以及質因子)改成了稍大的質數,最令人害怕的事情出現了——輸出變了……再仔細想想,發現做法假了!我無法描述當時的心情。2min 后發現稍微改一下就好了(笑),還要預處理逆元的冪啥的。改完后輸出變回了之前的答案,這事 ao 的。又改了一些質數,答案也沒變。遂將整個代碼認真地通讀一遍,然后扔了。

這時候還剩 15min 了,准備把 T2 通篇瞪一遍。我 TM,在這 15min 內發現了三個錯誤(分別是 las1 初始值沒設成 n、應當找該層節點數為 1 的連續段而不是 2、mnmx 沒算上一開始的「2 層」),其中最后一個是在最后 3min 發現並改正的……生死時速了屬於是。最后卡在最后 1min 內勉強通讀完畢。預計得分 100 + 100 + 12。

怎么說呢,雖然得到了很高的分數,但是比賽體驗是極差的。

djq 好像看錯 T3 題意了。回家看了一下 csy 的 T3 代碼,也是全排列,真就整的兩天 T3 都不可做唄。djq T2 寫的是奇怪的 rmq 做法,不過我把我除了 x1y0 的 multiset 貪心做法跟他描述了一下,貌似是對的。以及 ymx 雖然沒做出 x1y0,但其它三(兩)部分做法跟我一樣。

回到家第一件事(除了吃飯)就是打開 djq 的 T1 代碼跟我自己拍,畢竟誰知道通過干瞪眼查錯法有沒有漏掉什么 bug 呢。可喜可賀的是 T1 過拍了,以及雖然極限數據在本地 T 了,傳到洛谷上還是跑的很快的。

打開 T2 djq 的代碼和自己拍,轉反了,他的奇怪做法得到的答案好像比我劣兩倍不止。也難怪,djq 甚至以為大樣例很強來着(霧水)。換了 csy 的拍,過了除 x1y0 以外的三類,x1y0 他好像比我劣。又換了幾個人,輸出互不相同,/tuu 了。最后一次是找到了 yy 的代碼,x1y0 好像跟我能拍上,這事 ao 的!不過他其他問好像掛了,於是我就把 yy 的 x1y0 和 csy 的其它三類拼起來拍,拍了 10000 組(也就是每類 2500 組左右)沒掛。這樣看來沒啥問題了,那我是不是要 day2 標准分了???(轉反了,標准分是兩天總分算的。)

接下來一直在划水、測題。突然 tzc 跟我說我 T2 造 n = rnd(1, 100) 是不是有點弱了,我就調到了 1e5,直接就跟 yy 拍出鍋了!而且他答案還比我小!這就很寄了。研究了一會兒破案了,yy 寫的是 \(\mathrm O\!\left(n^2\log\right)\) 的做法,\(n\leq 2000\) 沒問題,\(n>2000\) 他用了某些卡時的方法,答案就各種奇怪了,甚至還會變小。那就沒事了(

后來小圖靈也出了 T2 數據,交上去也 A 了,那應該是真沒問題了。

NOIP 有一點點劣,能不能進 A 隊呢?咱布道啊,咱也不敢問。

day 4 - 2022.4.19

d1T2 插值可能到 n + 1 項,但我只預處理了到 n 的逆元。不過只有可能會掛鏈的 14pts,還行,但是 400+ 要沒了()

upd:晚上 6:00 出了分(當時我在外面排隊做核酸),竟然 402 一分沒掛(恰好跟 CSP-S2019 的分數一樣,這算什么現象?)!不知道該說數據是好還是爛,個人更傾向於后者。

也出了一些不知道可不可靠的省內的榜,我單看省選分數竟然是 rk2!人生的小高潮了屬於是(多虧了 djq 打假賽(bushi))。rk1 自然是 csy,比我多 20 幾分。算上 NOIP 的話我是 rk3,被戴老師翻下去了/bx。不管這個榜可不可靠,A 隊應該穩了吧。tzc 全排列寫掛了,不然也能 A 隊了(


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM