最後一次比北市賽了,不知不覺就變成了老人。
聽說之後會開 judge 給我們載 code,如果有並且我記得的話再放上來。
因為我是金魚腦,範圍不一定是對的。
題目
pA 物件輪廓 (contour)
21 / 23 / 0 / 0 / 0 = 44
給你一個 0/1 矩陣,這個矩陣上有一個連通、實心的由 1 構成的圖形,求他的外輪廓,按順時針順序從最左上的點開始輸出。外輪廓可以走八方位。
這題的輪廓定義其實不太嚴謹,我的解釋是這樣:如果一個 1,它四方位有至少一個不是 1,那它就是輪廓,然後要繞輪廓一圈,繞的時候走的方向可能是斜的,就是八方位,例如:
這題有一些很毒瘤的地方,第一個是他要繞順時針方向,第二個是答案要輸出方向編號,但他的方向居然是照逆時針編號的。
我的作法是,先找起點,然後從向右開始,順時針枚舉方向,如果下一個地方是輪廓而且沒有走過就走,走了之後再從向右開始看。前三個子題是圖形是長方形,但不知為啥我只過前兩個
我後來有用另一個作法,是把方向按順時針編號後,如果這一步要往方向
其實要過長方形,只要找左上角再找右下角就做完了。
我覺得我寫的東西對不對已經跟怎麼判要走哪個方向沒關係了,連長方形都過不了真的很扯。
pB 情報蒐集 (intel)
29 / 33 / 38 = 100
給你
個序列,第 個序列長度是 ,令:
第 和 個序列的最長共同前綴長度 求
的總和。
、
應該是整場最簡單的題目,把序列都丟到 Trie 上就好。
pC 套圈圈遊戲 (circle)
14 / 18 / 25 / 23 / 20 = 100
有
個物品排成一環,每個物品都有分數 ,接下來你要套圈圈 次,每次套一個物品。套到一個物品後,你得到的分數是「它兩邊的物品分數相乘」,如果兩邊的物品是同一個(目前只剩兩個物品)那就是另外那個物品的分數平方,但如果只剩一個物品,套到那個物品得到的分數是他本身的分數,不用平方。 求最大分數。
這題暴力居然可以拿 80 分,真是太可惡了。
(以下的 index 請自行換到
注意它是環狀,不過環狀當然還是可以區間 DP。我的作法是
算完後再處理最後一個被套掉的物品,如果最後一個是
pD 海盜寶藏 (treasure)
27 / 27 / 46 = 27
有
個節點,每個節點有一個數值 ,且 。 令
,給你 ,求 。
這題的題敘沒有寫得那麼簡單,他還有寫一大串,內容大致上是「有一些節點被祕密地挑出來,滿足:
- 被挑的節點互不相鄰
- 沒被挑的節點都和恰一個被挑的節點相鄰
把這些被挑出來的節點的
因為這一段的篇幅很長,所以會讓人以為題目的主體是找出那些祕密的點,而且子題還有幾個是「祕密點集只有一種可能」。我覺得這段的功能只是要讓人知道怎麼寫暴力和誤導人而已,跟滿分解沒有關係。
我在賽中有想到可以用高斯消去做,每一個
不過
pE 關鍵人物 (key_person)
37 / 63 = 100
有
個人,其中第 個人和第 到 個人互為朋友。令一個「交友圈」是一些人互為朋友,「最大交友圈」是最大的交友圈,「社交大師」(我自己取的)是在最多不同的最大交友圈的人,求哪些人是社交大師。
不知道為啥很少人過,但我覺得其實滿簡單的。
對每一個人
找到以每個人結尾的最大的交友圈後,拿出大小最大的那些就是全部的最大交友圈了(注意所有最大交友圈裡的最後一個人肯定都不一樣),再去幫每個最大交友圈裡的人數一下數量,就知道哪些人是社交大師了。
pF 社交分組 (grouping)
1 / 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9 / 10
Output only
給一張圖,求最小著色數和怎麼著色。
最小著色數是 NP-Complete 問題,所以就只能亂做了,我亂做就拿到這些分。
過程
這次早就有聽說會有 output only 了,所以發題本的時候毫不意外最後一頁看起來像是 output only 的測資表。
一樣開場先打 default code,然後開始看題。比賽一開始我肚子就忽然燒雞,本來想說題目全部看完再去,但真的忍不住了,趕快看完 pA 就跑去廁所。順便抱怨一下,考場離廁所有夠遠。
在廁所裡想了唬爛的作法(然後同一個作法我幾乎用到最後),出來後按照慣例把題目看完。讀到 pD 的時候才發現,哇怎麼有 6 題,師大再次出奇不意。
pB 是水題,直接放在 queue 最前面;pC 我這個時候想到的是
跟往常一樣我大概 30 幾分看完題目開始寫。pB 因為我把順序弄反,花了一點時間 debug,51 分鐘的時候才過。接下來就是要寫 pC,本來的狀態導了一下轉移式發現超難做後,花了點時間想出好做的狀態。不過有地方寫爛了,範測沒過,因為時間有點晚了,我就先寫 pE。
(這一段記錄和我的記憶有點兜不起來,我很努力在還原我開題順序很怪的事實真相了 (?))
pE 稍微想清楚一點確定是對的後就開寫,實作應該是所有題目裡最簡單的吧。在 1 小時 24 分的時候 AC,神奇的是我居然是第一個拿到這題分數的人。
回到 pC 後,我手算了一下,然後我手算也算錯了,我就以為範測是錯的,然後提問「為什麼範測 2 的輸出是 XX,如果先套 1 再套 2 應該是 AA + BB = CC、先套 2 再套 1 應該是……」我打的算式當然也是錯的,不過我沒發現。
過了一下子,有公告說 pC rejudge,然後我的提問得到的回應是叫我看公告,我就想說「喔,所以範測真的錯了」,但我又很納悶,他 rejudge 了但沒有改範測,我就問了「範測有更新嗎」,問了後沒幾秒我就發現,啊我算錯了,果然過不久後得到回應「No」。欸不是,上一個提問應該回我 No comment 之類的而不是叫我看公告吧,rejudge 跟範測根本沒關係。
中間我去寫了一下 pA,拿到很怪的 44 分後再回去修 pC。
花了點時間修程式的 bug 後,1 小時 54 分 AC,離結束只剩一個多小時,其實比我的預期晚了很多,本來我是預期 1:30 就要把 BCE 寫完的。
接下來研究了一下 pA 為什麼會錯研究不出來,就去亂寫 pF,直接隨便亂做後丟上去拿到 40,再看了一下 pA 還是找不到 bug,所以又去寫了 pD 的暴力,順便想到了高斯消去的解,看了看
pA 越寫越崩潰,到底為什麼連長方形都過不了,我的作法再怎麼唬爛,都不至於連長方形都過不了吧,但我也找不到有什麼地方錯,就這樣崩潰地結束了。
總結
總分 411,rank 5
結束的時候我超緊張,回想去年一堆人同分的計分板,超怕沒有前二等獎,但是簽成績確認單前又不讓我們拿手機,只好一直緊張下去。更慘的是有工作人員在前面用手機看計分板討論,我聽到他們在討論 pF,還說「也有人拿到很多分數欸」,害我緊張得要命。
pF 最高也才 50 分,為什麼要這樣嚇我 QQ。
打了三年,最後一次總算拿到一等獎了,但還是覺得打得不好,至少 pA 要拿到 71 分,因為長方形真的超好寫,沒想到都這麼老了我還會犯執著在滿分解上的錯。這場我真的幾乎沒有在注意子題,我賽中甚至完全不知道 pC 暴力可以拿 80 分。
我覺得最可惜的是 pD,或許是在北市賽的高斯消去對我來講意義非凡吧,我第一次比北市賽,也有一題是裸的高斯消去,當時還不會高斯消去,所以沒寫出來。後來去學了高斯消去,也遇到了不少要用高斯消的題目,但除了裸題外從來沒做出來、也沒看出來過。這是我第一次在比賽中看出不裸的高斯消去題,但就是因為覺得
如果我過 pA 我就會是第一名、只寫長方形也會是第二名,其實這還沒像 pD 那麼讓我覺得可惜,不過這是比較需要檢討的事情。
最後評論一下這場比賽吧,題敘寫得都有點難懂,而且 pA 寫得很不嚴謹(也有可能是因為我沒過才這樣覺得),不過鑑別度還不錯,而且一二三等線都有一個小斷層,切得還不錯,只是對後面的人來講題目有點太難了。我覺得 BCE 都是不錯的題目,如果 pD 範圍小一點的話也不錯,雖然感覺前年還是比較好,但跟去年比起來今年好很多了。