網頁

Tuesday 27 August 2013

夏末,斯德哥爾摩症候群

八月來到尾聲, 天氣仍然是悶熱, 在歐洲時想要晴天, 回來後卻想要陰天
不知不覺間, 一年前的今天是在 Stockholm exchange 的第一天, [小學生作文] 當天的情景還歷歷在目
每次走過像沙漠般的百萬大道, 就開始想念北國的天氣和生活



Monday 19 August 2013

Google Code Jam 2013 Finals - London

理論上 round 3 top 25 才可以 advance, 而我排 35, 不過因為有些人不去, 在比賽兩週前接獲了很突然的通知可以去
於是回香港不足一個月又再踏足歐洲, 感覺奇妙

雖然香港有去倫敦的直航, 但是不知為甚麼 Google 的 agent 安排的是要轉機的 (但後來發現日本選手 wrong 的行程是 東京-香港-倫敦, 而且是夢寐以求的 CX)
一開始是坐 KLM, 後來又變成 AirChina (稍感安慰的是由 747-combi 變成 777-300ER)

一波三折的啟程

原定星期四早上飛北京, 但因為颱風, 再加上國航沒有守時的概念, 0830 的航班 delay 了 7hr (另: 因 delay ground staff 派了餐廳 coupon, 才發現原來香港機場的餐廳很貴)

到了 1530 才起飛, 由 A321 變成 B777-200, 奇怪的 2-5-2 排位
出乎意料地大部份人都在睡覺, 沒有死小孩在尖叫

到了北京, 當然毫無疑問的錯過了 2pm 的 connection flight
(原來上次來北京機場已是 5 年前的事)
本身如果安排在北京往一晚然後明天搭同樣時間到倫敦, 是趕不上比賽的 (原定比賽前一天傍晚到達)
幸好 1am 有飛 Gatwick 的機, 順利話可以在比賽當天早上 6am 到達

但是因為要把 check-in bag 由 default 明天的機轉到今晚的機, 要搞一輪非常麻煩的手續, 於是在北京機場的禁區和 departure area 來來回回, 值得一提的是有不少香港旅客都是相同情況
離起飛還有一段時間, 在北京機場解決晚餐, 令人懷念的內地物價啊
北京首都國際機場
不負眾望, 到 Gatwick 的機準時起飛, 不過是 A330-200, 只有電視沒有 AVOD
但重點是一落機便要比賽, 所以只能渣睡 (渣取時間睡覺) (題外話: AirChina 提供燕京啤酒, 很難飲), 不過 AirChina 有一個優點, 就是會強制要求把遮光簾放下, 也算順利的在機上訓了 7hr

終於, 在比賽天的早上六時抵達 London Gatwick Airport
為了渣取時間休息, 採取很快也很貴的 Gatwick Express - Cab 到酒店 (剛好 under budget)
到達的時侯吵醒了同房 [[wrong]] :p

比賽天

早上是試機和參觀 Google 的 office, Google office 的餐廳實在是屈機地好吃
比賽 4 小時, 5 條題目, 看過上年的 finals, solve 全部 small 和 1-2 條 large 是可能的

開 A, 題意中的 touch 有一點不清楚 (雖然加上 sample case 就清楚, 不過需要一點時間), 也不是立即想到 large 的做法, 頹做也有點麻煩, pass
B small 的做法很標準, bsearch answer 後一定 exists 一條 optimal line touch 兩點, 輕鬆過之
開 D, 試了一次 O(N2) + optimize, TL 了
回到 A, 判斷的地方寫得有點複雜, 不過分數為重 (怒隊), 3 wrong tries 頹做 small
C 是 geom, 連 small 都未有人過, 但其實不難得出 solution 一定有一條線過兩點的結論 (非常經典)
題目限定了 solution 不能 touch point, 要把線 shift eplision, 有點麻煩, 因此錯了 2 次
由於全部的 large 都想不到, 所以目標是過所有的 small
D 終於想到 O(N log*N) 的做法, 用了 hash 去 implement (理論上可以不用), 頭幾棍因為 hash collision 而導致 WA, 最後結合了頹做 (因為只有 6% 的 case  n > 1000) 終於在比賽前 17 mins 過了 small
雖然 complexity 合理, 但其實 constant 很大, 過 large 不能 (事後發現和 author solution / 其它人的做法完全不同)

總結: 除了 A, 其實 small 是不能稱為「頹」的

宣佈結果前的 snack time, 很滿意地發現有酒類飲料供應
Reveal final scoreboard 和 ICPC 一樣, 都是由底開始 show result, 多了一個 column 是 show 當前每個人的 rank range (best rank, worst rank), 很有用的 function
最終由 topcoder admin [[mystic]] champ 了


[酒鬼 mode] 和 ICPC 相比, GCJ 才是真正的 celebration - 因為地點在一間 bar, 當然也是酒水任飲
一般的 bar 有 pool table, 但今次 Google 安排的這間 Bounce 就與別不同的是放了乒乓球枱
以及提供應該是為了響應主題的 "Gin Jam" (感想: 沒有酒精味)
雖然一開始基本上不認識其它人, 但在酒精 + 大會MC 安排分組遊戲下, 開始有趣
這類活動的最大好處是, 可以和名人交流, 例如和 [[cerealguy]] 切嗟球技 :D

倫敦遊

早餐時 Petr 坐對面, 被他霸氣側漏震攝了
Google 送了一張 hop-on-hop-off 巴士卷, 之前旅行經常看見這種巴士, 不過一直都未試過
不過結論是, 還不如送一張 24hr tube ticket

倫敦馳名的 cloudy weather, 使相片全部都覺得影得很差...
徒步遊走於名景點之間

London eye
Big Ben
科技感
白金漢宮
King's Cross
Harry Potter!
感覺很高級的住宅區
British Museum, 可惜去到時快關門

建在橋上的火車站
晚上拉埋同房 [[wrong]] 去食飯 (一個人去餐廳好像很奇怪, 也沒有理由食快餐 (而且有 £50 的meal allowance!))
隨便在附近找了間意大利餐廳, 湯+主菜+啤酒+甜品每人 £30, 在倫敦市中心來說好像不貴?

星期日, 晚機所以還有大半日在倫敦
London Bridge
城堡, 仔細閱讀說明, 好像和 AOC 的教學戰術有關
時空交錯感
接著前往在 GCJ 網推介的 Camden Market, 果然不錯
由於 Northern line 進行工程, 只好在 Euston Square 行過去
簡單來說, 就是有點像旺角女人街之類




£5, 非常抵
雖然很好行, 但是真正會買的東西不多, 隨手買了些東西便回酒店取行李前往機場
交通關係, 導致到機場的時間有點趕, 不過 Heathrow T2 殘舊得沒有逛的意欲
今次終是 B777-300 !
果然機艙很新很舒服, 有 AVOD (終於看了<孤星淚>, 可惜結局半小時睡著了), 還有就是起飛時的加速度, 與引擎的燃燒聲, 長途機還是 773 好

可以看到引擎的大小
在北京機場轉機很莫明奇妙的要過一個奇怪的 counter, 令人難而理解
偶遇 SAS Scandinavian 的 A340

到香港的機不知道為甚麼寫著「澳門航空」


就這樣, 結束了神奇又突然的 GCJ 2013 Final
[野心] 只差 TopCoder Open 就去齊三大 world finals!