ACM-ICPC Asia Jakarta Regional Contest 2017 沿途紀實與心得:前兩天-正式比賽

這次印尼賽區官方的舉行時間是 11/11 ~ 11/13,按照慣例第一天是開幕與測機、第二天是正式競賽與頒獎,而最後一天是到當地遊玩。我們的行程是從 11/10 飛往雅加達、到 11/15 飛台灣,而 11/14 是自己旅遊的日子。

第一天

這次印尼賽區的主辦校是 Binus University,是雅加達的頂尖大學之一。

Binus University (Anggrek 校區)

雅加達和台灣時差是一個小時,適應上是沒有什麼問題。但是往後幾天讓我最不習慣的是:一天比一天還早醒來⋯⋯第一天是六點半就被 staff 敲門叫床,之後大該是呈現每天早 45 分鐘起來的節奏。記得去年到緬甸好像也是這樣的狀況,不禁讓我懷疑是不是只有台灣人這麼晚起床。

貼心的是,主辦校為每一隊都準備了一個嚮導(escort),隨時替我們解決遇到的任何問題、困難,還有帶我們到場地去。我們的嚮導叫 Aldo,第一眼見到他的時候就覺得他長的頗像華人的,一問之下原來他奶奶是中國人,所以他也會說中文!知道他會說中文之後,我們幾乎都跟他說中文。(話說,台大那隊的嚮導也會說中文。後來幾天問了之後才知道他們有依照語言能力來分配嚮導。)

充滿電扶梯的教學大樓。

一開始我們就被帶去報到處。不得不說,主辦單位真的很用心!還搭設了一個攝影棚,背景是 ACM-ICPC 的字樣,為每一隊拍紀念照。報到的時候拿到了一個 Badge、一個電腦包(有一些小玩意兒)和一本手冊。接著就是正常的開幕儀式。

開幕式,兩個司儀很熱情!(iPhone SE 照相功能真的好差QQ)

和去年到緬甸一樣,開幕式都有當地的舞蹈和音樂表演。甚至到某一首曲子的時候主持人還請全場站起來一起跳!這件事應該不太可能在台灣發生(台灣連一個代表性的傳統舞蹈都很難定義了⋯⋯)。

開幕式的音樂演奏。(印尼人超嗨!)

接著就是一般型式的開幕式:請贊助廠商上台演講、請亞洲區老大上台演講、請裁判講解規則。比較特別的是在裁判演講的過程,就已經公布每一題的出題者。相較於台灣,總是神秘到家。

賽程的這兩天的早、午餐都是由主辦校準備,而餐點主要是像飯店早餐那樣的自助式取餐。說到食物,這裡的食物讓我最不習慣的是:都好乾。他們的米和台灣米是不同品種,而菜色也偏各種肉類的料理,菜的話主要是少量的生菜。(其實還有提供柳橙汁,不過我看那裡面一堆不知道乾不乾淨的冰塊,為了安全起見只好選擇喝白開水)

第一天的早餐。
第一天的午餐。

接著下午的行程是測試機器。比較特別的是他們使用的是電腦教室而不是體育館,所以座位其實有點擠,而且大家腦袋開始運轉後整個環境會變得超級熱。裁判系統是網頁介面的 DOM Judge,而 Code 列印是用網頁端上傳。整體感覺系統是還算可信賴的,不過有一點比較雷的是裁判系統和比賽環境的 Complier 是不一樣的,所以也取消了 CE 的 penalty。

第一天的行程大致上就結束了,接著就是我們的夜・生・活了!

回到 Binus Square 的路上。

但必須先忍受一段漫長的塞車時光(嘆)。只要到了上下班時間,雅加達的道路就不得動彈。一個很有趣的現象是,因為塞車,竟然衍生出一個新的職業:「付費交通指揮」,他的工作就是站在那種小、沒有紅綠燈、但車流量又很大容易塞車的交叉路口,如果有一邊的車子選擇付他幾百塊到幾千塊不等的印尼盾,他就會肉身擋在另一方向來車前面,讓付錢的車子能夠優先通過。太神奇了傑克!

接著,照慣例到了國外還是要分享一下到底吃了什麼食物,下面兩張圖都是在 Binus Square 的學生餐廳買的:

晚餐一:一塊炸雞和白飯
晚餐二:因為晚餐一不足使我飽,又買了晚餐二。晚餐二比較好吃,有台灣味。

接著第一天晚上就再練一套題組,不過因為隔天的起床時間真的超級早(五點半),所以我們大概打了三小時就收工了⋯⋯而且真的很累,整天下來有一種長途奔波的感覺。

 

第二天

第二天是正式比賽。照行程,一大早,我們就前往 Binus 大學吃早餐,吃完之後差不多就進入比賽時間。

先來講講比賽的事情。值得注意的一點是,我發現在緬甸和在印尼都有一個狀況:當地選手很喜歡在比賽開始前就違規地一直調整環境參數、打 default code(雖然這件事在 TOI 模考也有發生),而且工作人員似乎都不管,反倒強調如果要穿外套的話一定要從前面穿,必須讓背後的各種 Logo 能夠被看到。還好後來應該是有裁判發現,決定把所有人的電腦重開。

這次總共有 12 題,我們隊上的策略和以往相差不大:我負責快速讀題目,分辨題型,接著挑出簡單題給吳宗達寫、或者丟給林翔想。開賽一開始我們就發現第一題是道簽到題,於是就馬上告訴吳宗達,交給他解決掉;讀了一些題目後,首先是挑出 B、C、D、F、J、L 是看起來比較可做的題目,衡量難度後我們選擇先開可以用 Greedy 解決掉的 J,分析一下題目後,只需要判斷幾種 case 就可以了。雖然有一個 case 漏掉所以拿到了一次 WA,不過還是在 47 分鐘的時候 AC 掉這一題。

發現不少的題目看起來可做之後,又發現 F 是一道上次 NCPC 賽後曾經討論到的一題數學機率題,於是在吳宗達開始著手弄這一題機率之後,林翔也去幫忙;同時也在研究 L 有沒有方便的方式解決,但後來發現時限頗緊。所幸據隊友所述,F 推導之後有很精簡的作法,於是吳宗達就將 F 給解決掉了。我則繼續讀其他的題目,並思考有沒有比較可做的題目。後來林翔發現 D 是一題加上一點 map 就可以實作的題目,同時,我們也發現 B 似乎是一道純粹的資料結構優化題,我們把題目簡化很多但缺少一個關鍵的資料結構。於是決定先去開 D,林翔用很快的速度將它解決。

同時我和吳宗達開始討論 C,這是一道有點類似玩遊戲的題目,但我們需要去還原相符輸入的猜法。吳宗達想了一個感覺起來頗精妙的作法,於是開始驗證一些case,接著反覆調整作法。而另一頭,題目 B 的部分似乎可以用 Treap 寫,於是我們大概從現在開始一邊開 B、一邊開 C,我繼續看有沒有題目是能做的。剩下來的時間我們開始平行開兩題,但比較不幸的是兩題好像都少了一些就能夠解出來。

另外有一個小插曲是,到了最後一小時左右,列印 code 的 latency 大概是一小時——也就是說根本就拿不到 code,頗慘。另外賽場外的點心算頗多樣化的,有各種蛋糕(雖然好像在台灣都沒看過⋯⋯)、飲料,不過跟以前一樣沒什麼機會吃。

NCTU_Tmprry

總之後來拿了全場第 13 名,以大學來排名的話是第六,打得不算很好。差一名就有主辦單位送的紀念外套了!

比賽完後就是頒獎典禮,不過在頒獎前還是請了另外幾間贊助商來上台演說。我最有印象的公司是 Traveloka,一間做東南亞旅遊景點的服務,他們不斷強調他們公司有許多從美國頂尖學校畢業的學生,並有很好的工作環境,目前似乎是東南亞旅遊產業的主要公司之一。

頒獎完後照慣例就是晚宴時間!不過比較特別的是,晚宴的形式有點像是萬國料理,在座位區的兩旁有多台小的餐車,可以自行取用。另外還有 VR 廠商來設體驗區,聽說還有抽一支手機。結束後我們照樣回到 Binus Square。隔天是雅加達的旅遊行程!