(u1s1 不知為啥標題和 tzc 的游記不謀而合了)
當了一回也是唯一一回 E 類隊員。
不立 flag。不立 flag。不立 flag。(笑死,其實心里早就想的是,Cu 和 Au 都不可能,只能 Ag)
7.20
做了核酸,還是明基醫院。
HA 發大水。南京祿口機場突然出現 9 個確診。
ZJ 在比賽期間又會有台風登陸,ccf 選擇的是讓選手帶救生衣 instead of 推遲比賽,恰爛錢。
7.21
昨天 hb 跟我說今天的 mns《需要》參加(一周前 hb 喊我參加 mns,我沒理他,他打電話我直接掛掉了。所以這次不敢不答應),我心想這疫情都不給線下聚集了,怎么的也得取消了吧。結果改成線上。。。。。
結果竟然還得了 rk2(雖然只有 13 人)。
7.22
由於南京的疫情,下午南京的省隊隊員統一到某個地方重新核酸檢測,比較無聊。
tzc sjc csy 紛紛口頭 AK 下午的多校,而我沒打多校,哎,就是玩兒!
7.23(黨的生日)
昨晚到今早忙忙活活收拾好東西。早上問我媽幾點出發,我媽說吃過午飯,我說 OOOOooo。話音還沒落,看了一下 QQ 群,「緊急通知」,心肺停止。
說讓已經在火車上的人千萬不要出站,不然要隔離。我們也去不了了。噔 噔 咚
就尼瑪離譜。非要在關鍵時刻多幾個確診,還特么偏偏在南京。bzd 該怎么辦,現在全國好像只有 HA 和南京去不了。
這就真的搞得人很難受,好不容易進了 E 告訴我不能去現場。下午晚上心情不好,頹廢。
晚上打今年第二場 CF,4 題墊底了,人均會 6 題,心態爆炸。早上起來發現 B fst 了,掉了一百多分還剩 50 掉紫,相比之下 wjz 就很牛逼了,差幾十上 IGM(后來發現是看錯了())。
7.24(筆試 & 試機)
在蘇子恆的故鄉北小考。好家伙,那可是 nflser 的主場啊,擱這塞翁失馬焉知非福呢是吧(后來得知下午余姚中學那邊在下大暴雨,而南京天氣好得很)。下午筆試 & 試機。
上午到去年日報上背了下筆試,反正今年和去年基本一樣,由於大部分還記得背得很快。去 uoj 上測了一下 98pts,我好菜啊,翻評測記錄發現 tzc 99,果然是游泳帶師,ddw。順便瞟了一眼 thusc 的時候跟 jt 學的 vimrc 里的內容,下午試機的時候搞。
中午吃了刺激性食物,肚子咕嚕咕嚕發生化學反應很不舒服,要是是 day1 或者 day2 就完蛋了,還好筆試較為 H2O。
下午到了北小,等候室竟然在書畫教室。發了密碼條,csy 的 id 是 JS-30,他說是按水平排的,我說是按水平倒序排的。然后看了看我自己是多少號,竟然是 29 號(
人來的差不多了到了隔壁的考試教室,也不是想象中的機房,就是拼了桌子擺了 30 個電腦(后來才知道,30 是 JS 隊的人數,NJ 最后一號是 30 是因為 NJ 是個后綴)好像。竟然是裝的 noilinux 虛擬機,但是 windows 下沒有編程軟件,相當於整台電腦都是 noilinux 了。監考老師竟然還是 2020 和 2021 JSOI 的那個很可愛的監考員,好像是負責技術方面的,很牛逼的亞子(后來才知道他就是傳說中的 JYY)。聽到 tzc 跟 ztr 說了一句「誒誒誒您今年是不是穩了啊」,雖然是大實話,但是不知為啥就很好笑。
筆試做到一個不確定的多選題:宣布機試開始前能不能登錄系統?沒記得題庫里說,只說不能動鍵盤鼠標翻看紙質題目,而且我今天好像就登錄了(雖說這不是機試),於是就暫時認為能。后來一拍腦門,不動鍵盤鼠標 ntm 怎么登錄???立刻改了回去。30min 結束,35min 查分,不出意料地 100pts。
然后試機,監考員發了個向 vector 插入 1e8 個數的程序讓我們在本地開 O2 看跑多少秒。我到 terminal 里編譯竟然無權訪問?舉手提問,是要拖到外面的目錄……user time 0.2+s,這說明這里虛擬機的速度和現場基本沒有差別。
打開 vimrc 寫一些東西,忘掉了幾條命令,寫了七條退出試試看。結果告訴我七條命令一條都沒法識別???noilinux 果然是 ubuntu 的《閹 割 版》。試試其它編程軟件,gedit 和 GUIDE,首選項都不能調到我滿意,這就很方啊。瞟了一眼在我視線內的 tzc 的屏幕,發現他把 editor 搞得和 dev 很像,終究是 ddw 唄。但我找死了都找不到在哪兒括號補全,結果發現 tzc 好像也沒做到括號補全。。。。回去又去 vim 試了試,開個 help 看看,哦!我的命令都沒有寫 set
,比如 set nu
我只寫了 nu
,怪不得呢,是 wsbl。全文默寫(有兩條設 4 格縮進的忘了)之后效果很好,還加了一些小創意。
試機結束發現 tzc 竟然 99pts,他竟然不知道丟失密碼條扣的是 5 分,只知道扣分!這就不知道如何評價了(但凡能去參加開幕式也不至於不知道這個)……比較開心的是,今年的物資竟然會從現場寄到南京,我正盼着新的書包呢,因為 2020 的書包已經用壞了。
7.25
平平無奇的一天。
晚上打了個 SA 板子,其它板子不想打了,數論和 wll 就隨便看看。
參加了一個 nfls 組織的心理講座?yjz 那屆也有,ls 還特意強調 yjz 那次進國家隊了,就好像是這個講座的功勞一樣(
「每日與 tzc 貼貼/qq,尛 tzc 神仙以漲 rp/se/se
明天 rp++,tzc 保佑我不墊底/qq」
7.26(day1)
昨天晚上睡眠質量很差,早上起來暈乎乎的。8:00 就到了,在車上睡了半個小時回籠覺然后進了考場,清醒程度感覺海星。發了物資吧好像,有胸牌了終於,不至於什么牌子也打不了了。還合了張影,tzc 硬是要站第 1.5 排。
密碼條沒有密碼,下飯。這次弄丟應該不會扣分了吧/cy
9:00 之前一點進考場,竟然坐在 djq 對面,吸吸靈氣。本來准備 9:00 開考,但是解壓密碼硬是發不下來,再拖到了 9:10,又拖到 9:15 終於發了解壓密碼。好家伙,竟然是今天八位日期,這波下飯啊,day2 也直接輸入日期算了。
花了 10min 調好了首選項寫好了 vimrc 開始看題。果然都是 O2 c++11,ML = 1G hopping。但是三題 TL 都是 1s,有點不爽。掃了一眼,三題好像都是樹 / 圖。。。。。看一眼 T1 發現這不就是曾經某場 hb 模擬賽的題的弱化版嗎?當時我好像沒補,那估計廢了。然而想了半個小時竟然想出來了,1e5 大常數 2log 加上 3 組測試數據真的能跑過 1s 嗎……感覺勉勉強強,先寫吧。
寫了 200 行 4.5k,線段樹維護三個東西。。。。寫 + 調到 2.5h 的時候(本來就對 noilinux 的操作不熟練,再乘上這大量的調試,我簡直涼涼)正確性終於出來了(好家伙,比賽一半時間已經過去了,不愧是我)。最后一組數據跑了 0.94s。優化了一堆地方,都沒什么卵用,有的時候甚至負優化到 0.96s。最后靈機一動,我這 fread 快讀不還沒用呢嗎,這題讀入這么多。加上了之后變成了 0.82s,應該挺穩了吧,畢竟雖然大樣例 n = 8e4,但主要是看 qu 啊,三個 qu 都是 9.5e4 的樣子。而且看這大樣例這么強,就不對拍了吧,畢竟 noilinux 這么難用,而且已經過了 3h 了(講道理這么多場正式考試我啥時候對拍過?)。
好家伙,只剩 2h 給我搞后兩題,最多只能打打暴力了吧。。。T2 我本來理解的題意感覺很正確,結果中途對「相交」的定義進行了修正,這一修正為啥看起來就一點都不合理了呢(flag)?我感覺很 xor,心情也急躁了起來,算了先按照它說的想吧。接下來便有了一段堪稱糊塗到最高境界的思考(建議不要看,智商會被拉低的):
先看着 A 的部分分好像挺好想的,可以每部分分開算。首先由於這個「相交」的定義對兩對點是獨立的(sb * 1),可以想到拆貢獻(sb * 2),每對點如果連邊會產生一個奇偶貢獻,如果是奇的就需要計算包含它的方案數(sb * 3)。方案數怎么計算呢?這看上去是個這個 A 部分的核心。我看這是個奇怪的排列問題,每做一個決策,不同的決策剩下來的圖都不一樣,這么暴力搞要 \(\mathrm O(n!)\) 啊。再定睛一看,這不就和行列式的定義有異曲同工之妙嗎?所以二分圖完美匹配方案數就是鄰接矩陣行列式(sb * 4)!
那么我們就可以枚舉貢獻為奇的點對,得到剩下的 \(n-1\) 階方陣計算行列式(sb * 5),這樣可以過掉比較小的 A。大的 A 怎么搞呢?不難發現對每個點對刪除它得到的行列式是大鄰接矩陣的余子式(sb * 6)!這樣如果線性無關的話可以求伴隨矩陣(sb * 7),由於是個 01 矩陣還可以 bitset 優化高消(sb * 8),好耶!但是關鍵它不保證線性無關啊。。。。所以相當於白想。
那沒關系啊,把小的 A 拿掉也行啊。但是越想越不對勁,遲遲下不了手開始敲代碼,仿佛思路還剩一點漏洞沒有補,但是就是不知道在哪兒,朦朦朧朧的,這種感覺很微妙。再緩過神來,等等?為啥要 \(\bmod 998244353\)?它問的不是所有方案的奇偶性的和的奇偶性???而 tm 是偶方案 - 奇方案?這下完蛋了,看錯題了,想這么多都白想了。
所以要分別求偶方案與奇方案(sb * 9)。這怎么搞呢,總方案數我會求,就是行列式嘛(sb * 10),但要分別求兩部分就很不會了呀。最后只能草草打掉前 40 分,其中包含 A 的小點,可以直接階乘級別打暴力,也可以狀壓 DP。為了保險我寫的是狀壓 DP。寫完之后測樣例怎么也過不去,檢查了好久代碼感覺一點鍋都沒有啊,這怎么回事呢?難不成題目還是理解錯了?對修正之后的公式定睛一看,我草!真的理解錯了!修正前后並沒有本質差別!太方了吧,這時候還剩 1h15min,我要趕在 1h 前把這題搞完啊,不然 T3 沒時間搞了呀。還好正確的題意下依然可以狀壓 DP,把之前寫的改一改可以補救,過了大樣例,心里的石頭終於落地了。
讀完上面這段我做 T2 的經歷的你,是不是感覺很迷惑?我 tm 為啥思考的每一步都是錯的?題意還理解錯了兩次?我也 bzd,大概是平均下來 1h 要做好這道題,比較慌吧;再加上剛剛學完線性代數,難免對行列式的定義漏考慮了一個代數因子。
T3 就比較沒勁了。小點寫暴力大概是 1000 三方的,但是想起來圖的遍歷可以 bitset 優化到 \(\mathrm O\!\left(\dfrac{n^2}w\right)\),就過了,比較好寫。另外一個 \(m=n-1\),一開始以為是鏈,后來發現其實是個外向樹,0 和 1 似乎都不難。0 異常簡單,lca 都不用求。1 比較麻煩,最后還剩 10min 了,肯定來不及寫了,就放棄治療,嚎啕大哭。兩個拼起來 36pts,都是一遍過樣例,比較順利。
估分 100 + 40 + 36 = 176,自我感覺良好(flag)。問了 tzc 他竟然 219,太牛逼了,現在根本打不過他了,怎么這么強。ymx 說他不知道多少分?就很玄學。跟 tzc 交流了一下才發現,原來 T2 的總方案數是積和式,偶 - 奇才是行列式,而積和式不可做,可以反證偶和奇不可能分別算出來,我真是一個大 sb……然后他把大的 A 的點的各層行列式乘起來就過了?他也不知道為啥,真是不可思議。后來 csy 根據 \(|AB|=|A||B|\) 以及鄰接矩陣相乘的意義給出了一個老奶奶都能懂的證明,順便擴展到了 100pts 做法(先乘后求行列式),100pts 就這么到手了……zblzbl。
去了 ISIJ 的時候 wjz 帶領我們去的西安面館吃了一波 3:00 就回來了,但是至少 4:00 才出分。於是就各種划水:刷知乎,看別人在公屏之上打游戲。csy 介紹了一個新游戲 splix.io
好像挺好玩的,這就是圍城大作戰的網頁版。
4:00 進考場准備查分,數據已經發下來了,分數還沒發下來……本來想着等一會兒分數就應該發下來了吧,結果遲遲不發。我等不及了,直接開始測數據,各種 subtask 測最大的點(手都是抖的!),都過了萬幸,其中 T1 跑了 0.9+ 秒,應該還行。又等了一會兒下發了紙質版的評測結果(因為沒有能力發電子版),果然沒掛分(達成成就:在 NOI 賽場上 A 一道題),看到這熟悉的表格格式還是有一些親切感的。tzc 竟然也沒掛分,yyds ddw。lxr 190+ orz,sjc 和 ymx 都比我低,至少不用墊底。
后來發現我雖然有 150+,但這場 day1 可能是近很多年最簡單的一場,T1 竟然有 211 AC,AK 的都有 30+ 個,所以我這個分還是挺低的,如果明天同樣水平的話最多 Ag 偏后吧。不過心情還是不錯的,至少沒有發揮失常(但是仔細想起來,想 T2 的時候腦子里那片漿糊,不是發揮失常又是什么呢?我本可以自己推出來滿分做法的),把 noilinux 的操作熟悉熟悉再學個 gdb 可能就能減少很多調試時間,就能給后面的題留更多的時間。至於 T2,我沒有學過 lgv 引理,到明年這時候肯定學過了。
晚上試圖裝 noilinux,放到 VirtualBox 上調不了分辨率……只能下載 VMware,終於可以調分辨率了……
7.27
平平無奇的一天。
整天都在折騰 vim 和 gdb,也沒折騰出啥玩意來。
day1 是三道套路題,那 day2 可能是三道思維題。
「FLAG:明天還不考非傳統我就把 CCF 吃掉」
希望明天能翻個盤吧,至少到個 Ag 中位?rp++。
7.28(day2)
昨晚比較早就睡着了(怎么判斷的呢,主要是我睡着之前我爸還沒睡),今早起好早,因為 8:00 就開考了。
一路上心里都在想「今天是不是有非傳統題啊」「今天是不是都是 sweet tea 啊」「今天要翻盤啊!!!」比較緊張,heartbeat 比較奇怪。車上發現沒帶胸牌,真就連胸牌都打不了了唄!
到了發現我是第一個來的,另外我的座位號相比昨天沒變(這全場期望只有一個人),說明我今天會墊底!spl 來了之后問了一下,不帶胸牌並沒有關系,那沒事了。
7:50 左右進的考場?本來准備 8:00 開始,又拖到 8:10 開始,結果到 8:09 的時候解壓密碼還沒發到 NJ 分賽區,聽見 JYY 說了一句「過分」,感覺很可愛!然后 8:10 准時發了……今天解壓密碼竟然不是八位日期,還算有創意。
掃了一眼題目概況,wdnmd 今天咋還是沒有非傳統題啊。不過 TL 都是 2s 比較 hopping。看這 T1「量子通信」這 title 以為是個偽裝成傳統題的通信題,后來知道是我想多了,ccf 真無趣。還有為啥 T2T3 ML 都是 1G,T1 給我來個 380+M?難不成要卡空間?
開場腦子比較清醒,不希望再像昨天那么糊塗了,迅速把三題的大致題意瀏覽了一遍,完蛋了好像都不是很好做的亞子,尤其是這個 T1 感覺有點鬼 true?我今天該不會 A 不掉 T1 了吧不會吧不會吧。
發現了這個字典的隨機性質。但是害人的是詢問串不保證隨機,也就是可以根據字典來造,如果隨機了答案就全是 0 了(有三個隨機的點,送的)。算了一波隨機兩個串相差低於 30 位的概率,大概是 1e-38,這樣子任意一個詢問串最多會有一個匹配的字典串,但也沒啥用好像。想算各種 1 - 很小的概率的很大次方,但是計算器和 c++ 精度都不夠(比賽結束 tzc 告訴我可以 ld,wssb),xtbz。
撕烤了一會兒根據 \(k\) 很小這個性質胡出來一個大概可行的算法:每次隨便選若干位(幾十的亞子),那么一個詢問串如果有匹配的字典串的話,會有不大不小的概率這若干位全部相同,裝個桶 chk 一下即可,然后多跑幾十次可以保證正確率。選 \(x\) 位那么這個概率是 \(\dbinom{256-x}{15}/\dbinom{256}{15}\)。一開始選的是 \(x=30\) 然后竟然把 \(256-30\) 算成了 \(236\),你很下飯 ycx。最后選了 \(x=20\),這樣 4e5 除以 \(2^{20}\) 每次期望匹配個數好像連 1 都不到,這個概率也使得跑 100(后來卡常縮到了 70,一樣必過)遍不 AC 的概率比 tzc 不 AKIOI 的概率還小。
另外這個強制在線相當於沒強制一樣,拆成兩個就可以離線了。雖然一開始不知道有什么用,后來發現可以 70 次每次速戰速決,可以省空間。就這樣大概想到 1h 的時候開始寫了。寫到裝桶的時候卡住了大概 5min 不知道如何把 20 位散在 256 位里面的 bitset 迅速轉化為 20 位聚攏在最左邊的數,不然就沒法裝到下標里。暴力重構的話復雜度要多個 \(\mathrm O(20)\),比較慌。最終還是決定犧牲時間。寫完之后大樣例好像過的挺爽的,但是最后一個大樣例規模比極限數據小 10 倍我都跑了 0.5s 了,趕緊得測測極限數據。
新開了一個 terminal 造了個極限數據測了一下竟然要 9s。。。。。。遂把 vector 改成了鏈式前向星,然后再把其它能卡的都卡了,最后卡到了 5.2s,無能為力了……此時大概 2h15min,這次可不能像昨天 T1 花掉 3h 啊。那怎么辦呢?思前想后,我做出了一個艱難的決定(后來事實證明,這是一個無比正確的決定)——卡時。在 2s 時限內能跑多少次跑多少次。重新測了一下,怎么只跑了 13 次?測了一下 gen 函數的時間,tm 竟然要 0.9s……ccf 真特么下飯(后來意識到是我在 gen 里加了 init bitset 的成分,下飯的好像是我)。隨便算了一下,13 次的話當 \(k=15\) 時一個詢問的正確率只有 0.997 了,那 1.2e5 組詢問豈不是廢了。但是有些 \(k\) 很小的點 AC 概率應該依然很大的,以及 \(n\) 較小的點可以跑完,還有那三個送的點,算下來至少可以拿 68pts,還行了,還行了……這時候已經 2h30min 了,不能像昨天那樣一題 3h 了,趕緊 quit 看 T2 去。
這個 \(f\) 函數就很鬼畜,怎么展開呢。一開始試圖展開前幾項找規律,太復雜了……后來試圖研究增加一項的時候的變化,哎瑪,這不是個線性變換嗎?那用矩乘描述之后就有結合律了,就可以從左往右算了,很舒服。那小點和 append 就可以直接做,相鄰不相同的點可以預處理,也可以轉化成 append,那就有 50min 了。試圖研究 EW 序列改變的時候矩陣序列怎么改變,發現有點復雜,不管了先看 T3。這個 T3 不太可做的樣子,我好像連暴力都不會打。翻翻 pdf 翻到了樣例解釋,一下子就看到了「容斥原理」四個大字(好吧並不大……),這搞笑了樣例解釋還提示算法???那我好像確實會了 \(n\leq16\),但是 \(m=1000\) 好像時間爆炸。\(n=32,m=1\) 依然不會。那這題好像可以拿到 24pts 了,不戳不戳。這時候還剩 1h40min 了,要趕緊寫了,heartbeat 又厲害了起來。
寫 T2 十分舒適,這玩意幾個函數封裝一下非常好寫。但由於 subtask 比較多,寫完還剩 30min 了,趕緊沖 T3!還剩 15min 的時候沖完了,第一個樣例過了,第二個樣例死活過不了,到最后還是過不了,只能棄療,准備料理后事。這次不知道為啥除了要填文件字節數還要填奇怪的校驗碼。估分 [68, 100] + 50 + [0,24] = [118,174],跨度比較大啊!
問了一下大家(神仙們例如 csy 除外!)好像都 150 左右,那沒事了。遂去西安面館吃了個飯回來頹廢(回來的路上突然下起了雨,而我又沒帶傘,衣服濕透了)。一開始頹 splix.io 開了 teammode,結果一個人都沒有,就把整個 field 都圍了起來,測出了邊長是 600。頹膩了去頹 generals,FFA 兩次碰到 wjz,wjz van 游戲被發現了吧!id 是我起的 1004535809,tzc 這家伙可能 bzd 吧。
下午 3:00 的時候現場就出分了,但我們這邊就比較 pigeon,一直到 3:50 才不加通知地打印好了分數搞突然襲擊。然后第二個發的竟然是我的。我,一,看!woc,T1 竟然有 96pts?????這 tm 真的是我沒想到的,正確率明明很低啊。后面 T2 沒掛,T3 也撿了 12pts,不錯不錯,相對自己的預期有點滿意啊。而 tzc 117 就有點慘了,昨天他比我高這么多,算上今天一來一去我 tm 竟然翻回來 3 分!!終於不被 tzc 吊打啦!!!另外幾個人 day2 都比我低(依然除了 csy),總分除了 csy 和 lxr 也都比我低,lxr 我主要不知道 day1 多少。話說我跟 tzc 路過隔壁教室的時候竟然看到了有個席卡上面寫着「湯曉燕」,ycxtzctietie!!!11
回到家里頹廢,一直在水群。他們現場那邊好像還在講題,等他們講完在群里等了個榜的各頁的照片。Au 線竟然只有 498(從沒想過與 Au 只有 60 分的差距),Ag 線竟然只有 310。。。都比預料中的低好多。數了一下正式選手中比我高的有 92 個人,好家伙進前 100 了呀。非正式里面我是 rk13,lxr tzc 都緊挨着在我下面。ztr 竟然全場 rk6,真是功夫不負有心人。
晚上補游記(話說已經很久沒在游記里刻意划掉說補游記的部分了,這次看到 tzc 游記才想起來)。話說為啥這次游記會寫這么長啊。。。。。。
7.29(tzc 的生日)
上午閉幕式好像,不過跟我沒啥瓜系。
正式選手和非正式選手的榜竟然上午就在官網公布了,ccf 還挺勤快。
怎么說呢,這次 Ag 雖然是意料之中,但是也既看到了與 jxd 選手水平的差距,又看到了與 Au 並不是遙不可及(比如 day1T2 學過 lgv 引理那 60pts 就直接補上來了)。不管怎么樣,接下來一年都要認真卷啊。
NOI2021,是銀白色的。
7.31
獲得了 9 級金鈎,好耶!
話說 kkk 在第一批上金鈎的時候把我漏掉了,所以 tzc 等人比我先獲得金鈎,kkk 壞壞!!!
另外 ccf 發布新版 noilinux 了,增加了 sublime(正愁 vim 難用呢),gdb 也是最新版本,這真他媽是天下第一等好事。(16 號發布的,wtm 今天才看到)