也是最後一次打 APIO 了,這次在師大比,很酷的是用自己的電腦,但是我忘記帶電源線所以跑到超遙遠的辦公室去拿,太笨了。
題目
pA Mars
有一個
的棋盤,每個格子都是 0 或 1,你的目標是找出有多少個連通塊。 但你其實不知道這個表格長什麼樣子。有一台很破的電腦上面的記憶體有
個格子,每個格子有 100 個位元,第一個位元是棋盤上那個格子是 0 還是 1。接下來會做 輪讀寫操作,在第 ( )輪中,令 ,依序對這些格子操作: ,在操作某個格子的時候,你只能存取以它為左上角 的格子,並且只能修改這個格子。 在最後一輪結束後,讓
的格子儲存答案。
白話文就是第一輪時會去存左上角的
pB Game
有一張有向圖有
個節點,並給定數字 ,一開始只有對於 ,有 到 的邊。接下來有 筆操作,每筆操作都會加一條新的邊,每次操作後回答是否存在經過 中至少一個點的環。
、
pC Permutation
構造一個 LIS 數量是
的 到 的 permutation。連續給分,長度 90 內滿分。
過程 & 作法
因為這是 open everything(除了其他人類)的比賽所以不用打 default code (?),先讀題目。
pA 我看完後想了一下,覺得就是每一輪都只弄那一輪會處理到的右邊和下面的邊界,不是右下角的格子,右邊讓它存往右的那條格子們、下面讓它存往下的,至於右下角的格子比較麻煩,不僅要存往右和往下的格子,還要存右下角那片區域。
(示意圖)
重點是右下那片區域怎麼存,我這個時候以為只要存不和橘色那兩條箭頭連通的連通塊就好了,然後認為我做完了,所以在題本上畫個圈表示會做後去看下一題。
pB 看起來就是動態強連通分量,每次更新完都重做一次可以過前兩個子題,滿分沒什麼想法所以就先下一題吧。(對我沒有看第三個子題是什麼)
pC 就是 CSA LIS Generator,只是那題限制比較鬆。作法是二進位分解,要的長度是
接著打算寫 pA,我想說先寫個
後來又有了一些想法,像是把兩條橘上面有跟右下角連通的標起來,之後只數沒標的連通塊之類的,不久後就發現這個想法問題一堆。
因為 A 沒有什麼進展,我就先去寫 B,寫之前想到我還沒看第三個子題耶,看完後就想到直接維護
再回去 A,我想到如果橘色那兩條上面有東西是連通的,那大概會長這樣
總之就是會像可以用類似括號的結構來表示連通塊。因為一條長度是
- 00:左括號
- 01:右括號
- 10:往上的(看圖)
- 11:這個連通塊是獨立的
所以只要花大概
不過有個問題就是存橘色的 0/1 還要另外花
因為前面的作法都只有用到修改區域的右下那條,而每一輪會退後兩格,所以往裡面一層的那條總是沒用到,我前面就一直在想那條是幹嘛的,這裡就派上用場了,讓
我想了幾次後確認這個作法沒問題,時間還剩兩個半小時再多一些,雖然要做的事情很複雜但我覺得應該寫得完,而且有寫出來就起飛了,投資報酬率超高,於是馬上開寫。
中間每告一個段落都有手生個測資驗一下有沒有寫對,雖然多花了點時間,但也避免 bug 堆到最後很難 de。過程中我超緊張的,很怕寫不完,要努力剋制自己不要看時間,不然我會越來越急。中間有時不時去上廁所讓自己放鬆一下,並且把細節想清楚。最後剩快 20 分鐘的時候總算寫完傳上去。judge 速度超慢讓我壓力超大,去上個廁所回來還在 compile = =。
開始寫之後就一直都在寫沒吃過東西了,所以我就一邊等 judge 一邊吃剩下的巧克力,看到綠色的那一刻差點爽到跳起來 = =,剩下的時間就是想一想 pC,但都沒想到,另外就是把巧克力吃完。
總結
總分 100/60/91.36 = 251.36
TWN rank 1
total rank 6
好像因為 A 太難寫了所以一堆人寫不出來,我本來以為應該頂多金牌線,沒想到 rank 6,還沒有人破台(我本來預期中國會有十幾個人破台耶)。
另一件事是 B 和 C 滿分的人大多都沒拿到金牌,看起來是配分燒雞了,C 91.36 超簡單然後 100 超難,B 完全不知道怎麼做但滿分解只值 40 分,而 A 比較多人拿的比較高的分數也就 44 或 54,低分群又偏多,寫滿分就變得超賺。只是是超級大實作 QQ。
不過 C 確實不該值太多分,CF 一堆超唬爛解,好像亂枚舉然後質因數分解就會過了,我賽中覺得這一定有反例所以就沒去寫,果然不該對測資抱有太大的期待 = =。(我好像其實也沒時間寫就是了)