春光明媚,圓月高照,月明星稀,在這個伸手不見五指的夜晚, 機房里一位同學突然喊道:“今晚有ABC,打不打?”
我的第一反應:天哪已經周六了。
包打的呀!
當晚,機房里可能將近 \(10\) 位同學打開了 Atcoder 和 有道翻譯,蓄勢待發。我甚至提前打好了頭文件和數組。
比賽開始前 \(10\) min,我不小心關掉了 AT 的頁面,再打開的時候發現頁面卡崩了,怎么刷新都沒用。\(5\) 分鐘過去了,我看著旁邊同學的頁面都是正常的,心想完了要進不去了。所幸刪掉重進又可以了。
隨著 \(8:00\) 下課鈴的敲響,我們手忙腳亂地打開了 A 題。
A 題
視網膜:“\(B_1,B_2,B_3,B_1 \times B_2=B_3.\) 樣例是 \(3,15,5\),輸出是 Yes。”
哦那大概就是說三個數隨便排列,問是否有其中兩數之積等于第三數。
在第 \(1\) 分鐘,我成功過掉了這道題。
B 題
“哇你打的太快了吧!”旁邊同學感嘆道。
“有人開場 \(15\) s 就 A 了!”
我一口氣打開了 B 題、C 題、D 題。
視網膜:“element。distinct。do not appear。樣例是 10 3\n3 9 2,輸出 7\n1 4 5 6 7 8 10。”
知道了,求補集。
會有重復數字嗎?看樣例沒有,但萬一有呢——啊 distinct 是“不同的”,那沒事了。
在 \(2\) min \(44\) s 的時候,我交上了代碼。
我有點慌,因為我連過編也沒有過。我在瘋狂地按刷新,突然,它閃出了一個頁面:
完 damn 了呀!緊接著機房里響起了此起彼伏的聲音:
“我怎么 \(403\) 了呀!”
“我也 \(403\) 了呀!”
“可能是機房里人太多了,IP 被 ban 了。”
“那怎么辦?”
“涼拌。等。”
于是我連自己多少分都不知道,在不確定的慌張中,我點開了 C 題。
C 題
bib?bib 是什么東西?還有什么“star-ing”(實際:star(e)-ing)?不管了,看樣例。
Person \(3\) is wearing the bib with the number \(1\), and the person that person \(3\) is staring at, person \(2\), is wearing the bib with the number \(3\). Thus, the answer for \(i=1\) is \(3\).
\(3\) 穿著 bib \(1\),而 \(3\) 看著 \(2\),而 \(2\) 穿著 bib \(3\),所以 \(i=1\) 的答案是 \(3\)。
那大概是問你戴 bib \(i\) 的人看著的人戴的是 bib 幾咯。
樣例是4\n4 3 2 1\n2 3 1 4,我看,第二行中第三個是 \(1\),第一行中這個位置是 \(2\),第二行第二個是 \(3\)。那第一行就是在看誰,第二行是穿了什么 bib 咯。
所以 bib 到底是啥啊?百度告訴我是圍兜。。。
好吧題目中的圖畫的確實挺像圍兜的,但是也太簡陋了吧!
當我要開打的時候,旁邊同學圍過來要看題意。還有看不懂的要我解釋。于是我一邊打一邊跟他們解釋。
捋了一下邏輯關系,打打調調就過樣例了。我按下了提交鍵——
“那啥樣例是什么來著?”
“我剛交了代碼現在 \(403\) 了呀!看不了啦!”
“那你是否還記得……”
“讓我回憶一下,我記得 \(3\) 看著 \(2\),\(3\) 穿著 \(1\) 號圍兜,\(2\) 穿著 \(3\) 號圍兜,那 \(1\) 和 \(4\) 互相看咯,但是 \(4\) 好像沒有穿 \(4\) 號圍兜,那就是——\(4,3,2,1,4,3,1,2\)???”
我自己都不信。
D 題
直接丟翻譯。翻譯說,有 \(n\) 個骰子,第 \(i\) 個骰子有 \(k_i\) 面,上面有數字。任選兩個骰子,使得搖出相同數字的概率最大,求這個概率。
\(n \le 100\)?但是 \(\sum k \le 10^5\)?看著就像是暴力,但是感覺不像很能暴力的樣子。
我碼碼停停,中途發現看錯題了,又刪了再來一遍。有聲音說“的確可以暴力”,堅定了我的信心。
我決定把相同數字合并到一起,排序,然后枚舉兩個骰子,查找時二分。這樣應該沒問題吧……
“誒可以了沒有 \(403\) 了!”
一聞此言我趕緊刷新頁面,結果發現我 C 題交都沒交上去……。
在 \(19\) min \(20\) s,我通過了 C 題。
接著我繼續寫寫調調,終于過了樣例,把 D 題交上。
此時是 \(20:30:48\)。
F 題
我打開了 E 題和 F 題。先看 E 題,琢磨了一下題意,發現似乎不怎么會(畢竟是構造題)。于是看 F。
給出 \(p_i\),按順序進行一種操作:把數字 \(i\) 插入到序列中,使得它成為序列中的第 \(p_i\) 名。求最后的序列。
我們需要把序列拆成 \(2\) 部分,然后把一個數字和兩個區間合并……區間分裂,區間合并……
哈我知道啦!文藝平衡樹!
于是我找到了這道題,翻出了之前的代碼。
完啦看不懂!
又翻出了題解,閱讀了好幾遍,終于明白了我當年在寫什么。
然后發現標記區間翻轉的懶標記根本不需要。
然后修改一下,交,也是順利地 A 了。
此時是 \(20:41:40\)。
E 題
再認真的看一遍 E 題。大意是說一些邊連接著一些點,現在要把一些邊的一端連接到另一些點,使得點們互相連通。
啊互相連通啊。那就是并查集。
然后應該是有一些邊是冗余的。(比如那些自環是什么抽象東西,還有大的環可以拆一條邊。總的來說就是如果邊兩端的點本來就連通那就是冗余的。)
還需要判斷哪些點不在預定的集合內。
然后……
就是瘋狂的寫啊調啊改啊。
從 \(21:09:04\) 一直肝到 \(21:29:17\),我總共肝了 \(20\) min,貢獻了 \(5\) 發罰時,終于 A 掉了。
其中犯了很多錯誤。其中最那啥的有一個是:
++ans,as1[ans]=s2[i],as2[ans]=s1[i],as3[ans]=dq,ff[i]=1,
->
++ans,as1[ans]=s2[i],as2[ans]=s1[i],as3[i]=dq,ff[i]=1,
。
此時我欣喜的發現自己的排名上三位數了。好耶!可以漲大分了!
G 題
老實說這道題我有點眼熟。應該之前做過弱化版,\(n \le 1000\) 的那種。
身后有同學說:“我之前看到有人用 FFT 做過。”
啊 FFT?不好意思,不會(準確來說是學過但忘了),再見。
于是剩下的時間都在頹。
賽后看題解,還真是多項式乘法求方案數。
還是得加練。
在同學那里看了插件,發現自己預計可以漲 \(48\) rating。
什么?才 \(48\)?我好不容易才上 \(1000+\),結果你……
第二天,看見自己 performance 有 \(1465\)。都破紀錄了我請問你呢???為什么不給我多加點?!?!!?照這個蝸牛速度什么時候才能上 \(1200\) 啊!
將來一定要把 G 題補出來!
浙公網安備 33010602011771號