如何評價2017 ACM/ICPC ECL-Final?
Scoreboard: https://web.archive.org/web/20171217113735/
http://board.acmicpc.cn/
我先澄清一個事情,我的褲襠里藏不下 10 台評測機,謝謝各位大佬啊。
作為今年 ECL-Final 的技術包工頭,首先感謝包工隊的工友 @ftiasch 和 @Dai@NeverLand ,戰略支援小組的 @Riatre Foo 和 @伊芙喵 ,以及上海大學的老師們和在一線工作的同學們。我來講講今年 ECL-Finals 有關的故事。
準備階段
我是今年 10 月 22 日向周老師發郵件,說今年 EC 我可以繼續幫忙的。把日程啥的定了一下,還是周四晚上到上海,請周老師幫忙訂酒店。後面就是長達一個半月的裝死。
吐個槽:雖然已經知道今年又改名回 EC 了,但是我給周老師發郵件的時候還是手誤寫成了去年的 China-Final。But,直到比賽那兩天,我才知道原來今年也不是叫 EC-Final,而是叫 ECL-Final。Question:為什麼這個名字要改來改去呢?難道黃教授畢業於我大微軟的著名的戰略改名部?
12 月 2 日晚上,我們在亞洲第四訓練委員會(刪去)ICPC-Camp 的群裡頭,討(吐)論(槽)起今年賽區的各種鍋。我扔出了一個問題:要不我們換一個 DOMjudge 吧。大佬們:好頂贊支持!我們便開始行動,大概來說分了三個部分吧:
- 在群里繼續討(閑)論(天)關於更換 DOMjudge 的有關事宜,同時我在也諮詢了一下劉大師大佬的意見,也閱讀了一下 DOMjudge 的沙箱部分的代碼。
- 昂神開始在命題組那邊工作,徵得命題組的同意。
- 那天晚上,我立刻給周老師發了一個郵件。周老師回郵件非常快,說他們會在第二天討論更換 Judge 系統對他們的影響(那時候已經是凌晨 12:20 了)。後面的郵件中,我提出了跟 Scoreboard、證書等有關需要定製的系統,我們可以負責適配以往的代碼。周一的郵件中周老師同意了更換 PC^2 為 DOMjudge。
同時,教主 from Google 發來郵件,支持我們換跟 Final 一樣的系統,我們就非常開心繼續啦!備註:根據 icpc.baylor.edu 的文檔,明年 World Finals 用 DOMjudge。
我們制定了一個計劃,大概就是,下一周六(12 月 9 日)我們要進行聯調,我們要壓力測試。但是。周六下午我在醫院。周日我在睡覺。周一我在醫院。周二我在睡覺。周三我在休息+上班,勉強幹了一些事情。周四我在休息+上班,勉強幹了一些事情。然後,周四晚上,我就上飛機飛上海啦!
現場安裝階段:周五
不得不感嘆,還是上海的空氣適合我!周五起床感覺好了一大半了。到體育館後,設備基本都到位並且安裝妥當了。然後我去食堂吃了一頓飯,鞋濕了,感謝上大的同學給我買了一雙棉拖鞋並且不願意收我錢。後面,就正式進入苦逼階段了。
按照原定的方案,上大使用了去年的機器和操作系統,驗證過後就運進場了。我想找到去年我工作機上的一些腳本和數據,結果找了一遍裁判室沒有找到。這時候,張錄 from 上大來了,說,去年的裁判機都不在裁判室,都在賽場 A 區,於是,我們派出了所有的 Staff 去 A 去找,終於找到了一台他們不知道密碼的電腦,我試了一下我自己的密碼,進去了,Lucky!
後面幹了一些什麼事情呢,給一台伺服器的 CentOS 換成 Debian(因為我不熟悉 CentOS),再給另一台電腦換成 Debian,收集今年 DHCP 分配的 IP 以及座位表的關係,並根據座位表重新給所有電腦分配上固定 IP(因為我希望今年不要用密碼登錄了,直接座位綁定隊伍就好)。
小技巧,如何關聯,我們做了兩個事情:
- 請志願者給所有電腦的桌面創建一個叫 seat 的文件,所以我可以關聯上 IP seat no.
- 請叉姐給了我一段命令,可以生成一張是座位號的圖,並且將這張圖換成桌面背景,這樣可以方便地檢查有沒有設置錯誤。
這當中又有一些小插曲,他們本來安排了 4 點請一波志願者來做壓力測試,但是我覺得這樣壓力測試沒什麼意義,因為這些志願者根本模擬不出真正高壓力的情況,因為去年也做壓力測試了,根本交不來多少代碼,比賽結束前的十來分鐘,提交量又遠比這個壓力測試大,PC^2 根本處理不好。當然這也是次要的,主要的是當時我還沒找到 private key,還策劃著要重裝系統,然而又要裝系統又要架 DOMjudge,4 點壓根做不完!
這當中又有一些小插曲的小插曲,我們希望志願者趕緊過來把座位號掛上,但是志願者負責人那邊又堅持說要先壓力測試再掛座位號否則座位號會被搞壞了(並搞不懂這個邏輯),但是我們又決定了要取消壓力測試了,他們說他們不知道取消壓力測試了,這個事情又反覆溝通了很久,反正有點囧,還是要感謝張錄在那邊反覆溝通。
裝上了 Debian,就要在上面裝 Docker,裝 DOMjudge 啦,裝 MySQL 啦。這裡涉及後面反覆調試的問題啦,後面再說啦。我開始是想先裝上一個 DOMjudge 的 website,然後戴老師就可以做他那部分工作了,事實證明並不行,因為我還沒有裝上 judgehost。
Update:傍晚的時候,周公子過來了,請他安裝上了 NTP server,然後把下面的電腦的 NTP 的 IP 改對了,確保了選手機器時間準確(以及匹配伺服器時間)。
晚上吃了個盒飯,繼續裝這個裝那個,又發生了一個意外。這個事情的起因是我們發現有不少電腦的 seat 沒有設置對,戴老師幫我下去檢查,發現很多電腦上錯誤地登錄了 Guest,所以我希望禁用 Guest 並且刪除創建的賬號。我本來應該:
deluser `grep guest /etc/passwd | cut -f 1 -d:`
But!But!But!我寫成了:
deluser `tail -n 1 /etc/passwd | cut -f 1 -d:`
然後,interesting!我發現大部分電腦我連不上 SSH 了!經過研究,有一個叫做 sshd 的用戶,我刪掉了。
然後,我只能請現場工作人員,到每一個電腦,用 tty 登錄 root,執行:
cp /var/backup/passwd.bak /etc/passwd
過了半個小時,經過工作人員的辛勤工作,終於修好了所有的電腦。
這段時間我還幹了一些啥呢,因為腦子比較混亂,劉大師之前似乎告訴我,最好在 Debian 上安裝,否則可能引起一些奇怪的問題,我就給裁判室的一台電腦安裝上了 Debian,然後用還原卡同傳了另外一些電腦,加起來大概我們就有 13 台評測機了吧。裝完以後,要逐個電腦設置 IP,由於我實在太鹹魚啦!我只配置好 8 台。
這些還有一些小細節,DOMjudge 默認會用 debootstrap 來做一個 chroot 的環境,然而我覺得這樣不是很好,因為會導致跟選手環境不一樣。解決方法是,做了一個 Ubuntu 的啟動盤,到選手機上,把 /dev/sda1 掛上,做一個 cd /mnt mksquashfs /foo/bar/chroot.squashfs,然後把這個 squashfs parallel-scp 到所有的 judgehost 上,mkdir /chroot/domjudge mount /foo/bar/chroot.squashfs /mnt cd /mnt rsync -a . /chroot/domjudge。請不要直接 copy paste!請根據你的實際情況修改命令!
然後就進入下一個階段了,就是配置好 DOMjudge。白天的時候,我 cat /proc/cpuinfo free -m 看了一眼,發現是個 E5+16G 內存(其實是 32G,因為我一開始查的那個機器有點毛病,下面說),yyf 大佬告訴我這是個辣雞 E5,這個內存也 (雖然後面劉大師馬上跟他吵了起來),反正我還是很心虛的。於是呢,還是要執行一下 checklist,請戴老師做一下壓力測試。戴老師不知道從哪裡掏出了一個壓力測試的 php,然後:
loop:試著跑了一下,掛了,請我清理一下資料庫,修改一下那個 php
反正 loop 了若干輪,終於能跑了,DOMjudge 果然立馬炸了。我看了一下 web server 和 htop 和 mysql server 的 htop,思考了一下,覺得 database 負載這麼低,web server 也這麼低,一定是因為 worker 不夠,立馬改 php-fpm 的配置,其實也沒幹啥,大概就是改了 pm.* 那系列的配置,把 pm.max_children 改到了 128,反正最後還是會有一些 request 掛掉,但是總體來說失敗率已經很低了,戴老師和我都覺得可以接受了,這個事情就算過去了。
後面我還幹了啥呢,大概就是,戴老師說,我們應該要 https,我覺得很對!但是我總不能掛個 nanometer.io 吧,也不能掛個 icpc.camp 吧,我想還是用一個 contest.acmicpc.cn 吧,自簽一個吧。我怕某些選手機的時間掉了,所以我還要簽一個 1970 年到 2038 年的證書。然後,自簽了一輪,Chrome 始終認為這個證書不對,反正是某個版本後提高了對某些屬性的要求,然後開始反覆 Google 反覆簽,幹了兩三個小時,還是沒搞定。我最後劉大師掏出了兩個命令給我,Chrome 終於認可了!然而,Firefox 還是不識別。心累。還是等第二天周老師來了,拿到這個域名的解析然後 Let"s Encrypt 一下吧。
這個時候大概已經凌晨 3 點多了,還是先回去睡了。走之前,戴老師告訴我,DOMjudge 裡頭有個 config check 之類的東西,讓我記得檢查一下配置好。
回到賓館,繼續搞。因為樂乎樓就是上大的網路,賽場的網路是上大信息辦配置的,跟校園網是通的,我就繼續搞那個 config check 裡頭的東西,回頭又配置來配置去,後面又不是完全睡得著,來來去去的,睡覺的時候都 6 點了吧。
現場準備階段 熱身賽:周六
8 點,叉老師打電話來,說他快到了,我只能起床了。在樂乎樓跟裁判們吃了個早飯,然後就去賽場了。叉老師已經到了,需要他把氣球列印配置上。然後就怎麼給他接上了啥的,我也不是很記得清楚了。
睡醒以後,特別的氣,掏出了 namecheap 買了一個 acmicpc.network,請叉老師幫忙 Let"s Encrypt 了一下,拿到了 key 和 csr,然後配置到了伺服器上,就 work 得很好了。
後面幹了啥,我也不是很記得了。大概 1 點進場,反正還是很慌張,進場前我還重啟了一下所有電腦,志願者回來告訴我有一個機器登錄不進去了,我去看了一下,硬碟壞了,氣炸!到裁判室掏出了一台備機,請一位 13 級的復旦學霸 Google 裁判幫我把電腦搬到外面,然後掏出了我的 Ubuntu U 盤,把昨天做的 squashfs rsync 上去,可算在那個位置的隊伍進場前裝好了。
開始之前還發生了若干有趣的事情,例如裁判室的門把一根電線蹭破了,導致裁判室跳閘了,如此反覆了兩次,找到了根源,然後把那個插線板拔掉了,從另一個地方專門接了一路電了,保證了穩定。
Update:上面說到的那個伺服器只有 16GB 內存,斷電再開以後就發現問題了,BIOS 自檢報警,拆開把內存重新插了一下,就恢復到 32GB 了。
這時候大家已經進場了,我又想到一個問題,選手的機器還登錄著呢!我還沒鎖呢!去年的選手數據還沒清理呢!我慌慌張張跑回裁判室,趕緊 parallel-ssh -h all_seats -l root -p 330 "passwd -l icpc /etc/init.d/lightdm restart" 把他們全鎖掉,並又上了一系列命令刪掉把數據刪掉。Tip:除了 /home 下面要清理一下,/tmp 和 /var/tmp 也要清理。
後面又折騰了好久,我又想不起來幹啥了,大概是把熱身賽的環境啊 數據 啊配置好。然後三點啦!然而還沒有徹底弄好,又延遲了幾分鐘,然後就開始了,然而,還是爆炸了!具體是怎麼爆炸的,請看戴老師的回答。
晚上吃了教練晚宴,回裁判室繼續肝,後面主要是叉姐和戴老師的工作了,我把該改的配置改好,把一些圖標給傳了下去。儘管裁判們覺得 8 台評測機足夠了,我還是很擔心,於是又同傳了 5 台電腦,最終達到了 18 台評測機。
後面其實我已經沒啥事情了,或許我又幹了啥反正我已經想不起來了,就是等郭老師和搞學長把東西弄完,最後聯調一下,弄完以後,已經三點了吧,實在太餓,還跑到上大門口外面全家吃了個咖喱豬排飯,感覺這個豬排的數量比以前變少了,sad。
這裡還有個鍋,下午綁定了 IPADDRESS 後,發現了一個鍋,DOMjudge 有個奇怪的設定,如果是在 IPADDRESS 模式下,你在一個沒有綁定的 IP 登錄,又用了用戶名密碼登錄,這個用戶就會綁定到這個 IP 上。我用的網線還好,但是別的 Staff Judge 用的都是一個 NAT 的無線路由,所以大家都登錄到了一個賬號上,這個事情雖然也 work,但是不是太好,晚上回到樂乎樓後,我又改了一下那個登錄函數,把這個行為給 fix 掉,又快 5 點才睡覺。
正式比賽:周日
8點到裁判室,大概把電腦重啟了一下,檢查了一下,沒什麼毛病。此時想起來一個問題,今天好像沒讓列印密碼,雖然 DOMjudge 不需要密碼了,可是列印系統還需要啊!所以我趕緊掏出了之前的 Excel 找出了密碼發布到桌面上,沒想到還是發錯了。總體來說還是一路和平吧,裁判們在裁判室談笑風生,我刷刷這刷刷那,感覺良好。後面 12 點我還接上了 WiFi 跑到直播邊上坐了一個小時,因為,裁判室沒有空調實在太冷了!戴老師提到了一些鍋,我來解釋一下:
Q:為什麼延遲了 5 分鐘開始?
A:不是技術問題,主要是因為發題目出現了一些問題,為了安全起見,延遲了 5 分鐘。
Q:為什麼列印系統登錄不上?
A:請閱讀上一段。
Update:後面我重新發了一次密碼,然而還說有隊伍發現沒更新,原因是第一次的文件名末尾有個^M,第二次沒有,所以就有兩個看著文件名相同的文件但實際是不一樣的。後來我把兩個文件都刪掉了再重新發了一次才好。在這裡向所有隊伍道歉,耽誤了大家的時間。
Q:為什麼開始比較積攢了一些提交很久才測?
A:這是我的鍋,一開始我開了 4 台評測機,感覺可以撐幾分鐘了,一會兒再開,沒想到馬上裁判就告訴我有很多 CE 是新裝的評測機引起的,趕緊先把他們關掉,準備維修結果又遇到了列印的問題。修好列印的問題,裁判告訴我積攢了太多了,我又趕緊上去先把昨天裝好的評測機打開,然後把沒有配置好的評測機的維修好(主要是 adduser 和 add cgroup 的問題),馬上全打開。18 台評測機打開後,沒幾分鐘立馬就好了。還有一個小鍋是,DOMjudge 是隨機挑選沒有測的提交,導致了有一些早交的一直沒有測,這在正常情況下是沒什麼問題的,但是一旦到了高峰,就成了一個問題。
Q:平均要等一分鐘才能測完?
A:這種事情不存在的。我一直在刷 submissions 頁面,平均刷新幾次 judging 的 submission 都會清空掉。還有一些情況,跟以往 PC^2 不同,以往因為 PC^2 老版本不支持,傳統上都是一個題目只用一組測試文件的,但是這次因為 DOMjudge 支持,多數題目都有大約 10 組測試文件。儘管如此,除非是一些時限很長的題目,否則通常都很快,如果你們真的普遍覺得評測很慢(剛開始的故障時間和最後 10 分鐘除外),請在評論區提出,我再查查到底是為什麼。
封榜以後,我回到了裁判室。到了最後 30 分鐘,我非常關心伺服器壓力的測評隊列如何。到了最後 web server 和 mysql 的 CPU load 都到了 3-4,可以說是比較高了,但是因為有壓力測試在先,這個壓力應該說還是可以的。中間有一兩分鐘壓力飈得特別高,可能出現了一些 500 系列錯誤,這些錯誤也引起了一些評測機下線,一度有所積壓,後來很快就好了,在結束 10 分鐘以前,沒有形成太大問題,submissions 裡頭基本都是 Judging,極少的 queue。
Update:想起來了,最後半小時但是不是最後 10 分鐘,應該是沒有 500 系列錯誤的,掛了一波是因為上大外網掛了幾分鐘,引起 DNS 解析失敗,然後 judgehost 就解析不出來 acmicpc.network 了。後來我趕緊給 judgehost 們加上了 hosts 就算解決了。
在最後 10 分鐘,真的就是 10 分鐘,就開始不行了,開始積壓了,到了最後結束的時候,高峰積壓了 400 個提交。因為 DOMjudge 的特性,結束後還是能提交上來的,只是會標記為 TOO-LATE,並且他還真的會測。又因為他 random judge 的特性,我在結束後沒幾秒就直接將提交的那個 php 在 nginx 裡頭僅用了,再也交不上來了。後面看來,這些提交多數都是臟交,有幾個隊伍不知道出於何種目的,把一份相同的沒有 random 的代碼交了特別多次,浪費了大量的評測資源,以後可以考慮禁止重複代碼提交。
後面裁判室內就是把結果數據導入到各個系統出各種結果啦。因為是新系統,我將新舊系統出來的 Scoreboard 對比了很多次,才出了最終的成績,並且跟組委會的各位老師反覆討論,定下了金銀銅獎牌線。非常感謝組委會及黃金雄教授能同意我們提出的多發兩個金牌的建議,使得最後多發了兩個金牌,讓所有通過 9 題的隊伍都獲得了金牌。
後面還幫忙出了若干報表和列印表格,例如 Google 的包的表格,也是寫了一個小 py 結合了 Office 系列軟體生成的表格。這些事情都不難啦,但是我兩天就睡了五個小時,腦子實在很糊。
最後我導出備份數據的時候,發現資料庫的 size 高達 35G,我 tar acf mysql.tar.gz 花了特別長時間,anyway 最後我和周公子那邊都備份了一份 copy 走了。
最後,終於所有都結束了。跟 ICPC-Camp 的大佬們吃了一頓飯,就回北京了。感謝公司的年假制度!歡迎加入微軟!感謝家屬 @jingyixx 的鼎力支持!
後話
我以前也提出過,我認為比賽最重要的是:命題、裁判、環境,後勤屬於比賽那兩天的生活保障了,相對比賽來說是次要的,禮品啥的更是錦上添花的。很可惜的是,近年來重視核心三項的主辦學校越來越少了,很多主辦學校不好好把核心三項的事情做好,整天不知道在糊弄什麼。這裡一定要表揚上海大學,辦好如此大規模的比賽相當不容易,辦了如此多年,無論在核心三項還是後勤、禮品等方面,都做得相當好,每年都還在堅持提高,相當不易。在同意我們進行技術革新這方面上,更是多數主板學校所缺乏的必要的魄力。這應當成為國內各賽區的標杆,其他學校主辦比賽,確實可以好好參考一下上海大學。
當中出了因為我失誤,出了若干事情,尤其是正賽開始的列印系統的問題,我再次向各位道歉,希望沒有影響到大家比賽。
借這裡,我想說個事情。我在 Facebook 上看到某著名前選手,抱怨說他經手的比賽他都想儘快把題目公開出來,優先掛到 Codeforces 讓更多人受益,但是僅僅做點這點遇到那麼大阻力云云。這位前選手,在比賽結束後我備份數據過程中,也進入裁判室向我討要數據,被我斷然拒絕。
這個事情我是這樣看的:公開題目、數據,甚至是公開選手程序,我認同這是非常正確的事情,確實值得推廣支持。但是,不是你覺得正確就可以直接做的,這涉及的問題是什麼呢?
- 在中國大陸沒有這個傳統的情況下,大家沒有默認這個事情,你應當跟主辦方和命題方溝通確認,當主辦方和命題方都同意的情況下,才可以公開測試數據。
- 同樣,在中國大陸沒有這個傳統的情況下,你需要先徵得選手同意,或者經主辦方同意在比賽報名前聲明,這場比賽我們會公開所有代碼不爽不要玩,你才可以公開全部或者部分選手代碼。
- 這個道理沒有什麼不能懂的。就像是你覺得開源是個非常好的事情,我也覺得開源是個非常好的事情,並不意味著你進入 Google 以後可以直接把 Big Table 的代碼開源到網上。你只是一個經手人,或者說合作夥伴,甚至說什麼都不是只是一個碰巧有許可權接觸到代碼或者數據的人,你沒有許可權隨意處理,這是一個基本的道德問題。
- 就算是已經形成了公開的傳統,或者是主辦方或命題方同意了公開代碼。但是,在什麼時候,在什麼地方,由誰以什麼形式公開多少,這仍然是一個需要商議確定的問題。你作為一個不知道哪裡來的人,拿到了題目數據和選手代碼,憑什麼你就可以直接公開?你真以為你是什麼權威人士或者業界大佬了?
在 12 月 2 日星期六,我們討論完更換 DOMjudge 以後,昂神回 Google 內部的群討論,結果第二天某著名前選手就開始在外面到處說 PC^2 不好明年要全換 DOMjudge。或許是我以小人之心度君子之腹,你如果真的覺得應該這樣你為什麼早不上偏偏我們開始行動你就開始叫囂?坦白說我非常不喜歡這種屁事不做然後拿著別人做的事情到處叫囂的人。
Changelog:
12/20 02:02:增加周公子出場安裝 NTP 伺服器,增加機器 16GB 內存原因,增加正賽列印掛掉的分析,增加最後半個小時中斷小規模積壓 judge 的原因分析。
12/20 10:04:改正部分表述,增加後話。
恭喜海女美術大學今年出戰全冠(霧
說一些有關於題目的:
B 這個題是一個很早的 idea,在最後一周被大佬提醒 m 可以出到 1e18(?),因為擔心中間過程會出問題所以還是 2e5。
C 來自於有一天打車上班在世紀大道上被 5 個紅綠燈全卡了的怨念,就有了這麼一道題。一開始的想法是周期不同,可惜最後一周發現結論是錯的所以只能出周期相同的簡單(?)版本,不知道有沒有同學對周期不同的問題有研究一下的興趣。
D 最初的版本公比只能是整數
F FB 的代碼出題人和驗題人看了三四圈都沒看明白,最後發現做法和複雜度都是正確的,而且要簡單很多,真厲害!
G 最初的版本只要把所有圖片區分了就好了(一次詢問)
I 為了題目的正確和不願意透露姓名的出題人 @李貝瑀 討論了好幾個晚上。
L 範圍是故意出到 1000 的,感覺這題還是有點意思,分界線正好就在暴力一瞬間跑不出來的地方。
如何辦好一場比賽?
我在本次比賽中有幸擔任技術志願者(自己起的稱呼,其實我也不知道叫啥……),下面簡單介紹一下這次的過程以及一些個人感想。除了流水賬之外,我更加希望通過這個回答提高 *CPC 圈子內對競賽技術支持這個工作的重視程度,畢竟一個逐漸精細化、規模化的工作,卻陷入了東湊西湊、不懂亂弄、沒有支持、能用就行的局面,實際上是非常令人遺憾的。要辦一場比賽,不難,把人湊到一起,塞一份題就夠了;但是要辦一場大家滿意、比賽體驗好的比賽,則要難的多了,正如很多地方說的一樣,為了提高 20% 的體驗,你要付出數倍的努力。
競賽前期準備
這次工作說起來也頗有一些運氣因素,為了去 ECL Final 現場看看,我死皮賴臉的求 @朱健維 老師讓我當個苦力,還好朱老師宅心仁厚,讓我這個混子也有見見世面的機會。
在帶隊參加完 CCPC 2017 Final 後我聽到了不少來自於裁判組的吐槽,基本上集中於一個萬惡的根源上: 。
這個國內賽區必備工具、被無數人吐槽、HUSTOJ 最頻繁的比較對象,做到了一個大家不敢想像的事情:每年固定更新一大堆 bug...可以說是每年都有新驚喜。甚至還有過影響比賽結果的惡性 bug。糟糕的代碼導致效率低下,糟糕的架構導致無法做良好的容災工作,使用的注意點多如牛毛且必須每年更新(如果有人有興趣可以向我索取《 自救手冊》),尤其在高負荷下丟提交的問題一直沒有解決……總而言之不像是個能夠正常使用的競賽系統。但它偏偏就用了這麼多年,這其中除了習慣問題外,實際上也反映國內競賽主辦方在這方面的行動緩慢以及保守心態(反正比賽能辦的像個樣子就行,不要出大型事故才是關鍵)。另外, 不是開源軟體,如果要對其進行修改幾乎是不可能的,只能靠讀它厚厚的文檔去調用 API 做一些操作——儘管平心而論, 的各項功能還是相當完善的,畢竟不能自己動手改,如果開發者再不提供,這軟體就真的徹底沒人用了……
在閑聊的過程中,我們突然意識到, 其實不是一個必須選擇——雖然我認為 HUSTOJ 不是一個作為區域賽比賽平台的好工具,但不代表其他類似的 BS 架構的系統不是。在一年前,我們學校內部訓練曾經使用過 DOMJudge,使用時較為方便的後台管理界面、完善的提交結果顯示給我留下了深刻的印象(當然除了榜之外不咋好看的界面也給我留下了印象……),因此 DOMJudge 進入了考察範圍內,在試用、查看代碼以及討論後,我們做出了一個大膽的決定:在 ECL-Final 上啟用 DOMJudge 作為比賽平台。
在這裡非常感謝主辦方上海大學以及裁判團隊 Google 中國的信任和支持,這個看上去有些冒險的舉動如果得不到這兩方面支持幾乎是不可能實現的,尤其是周老師的包容和支持解決了我們工作中的很多問題。在得到許可後,我們迅速制定了工作計劃,對系統進行了前期的必須調研和基本測試,通讀文檔,了解系統各關鍵點,制定部署計劃。
不幸的是,朱老師比賽前身體微恙,導致計劃很多部分沒有按時完成,最後部分工作只好留到現場完成。
熱身賽前一天:基本環境安裝
本來打算坐早上 9 點的火車的,結果起床一看時間已經 8 點 30 了……只好默默掏出手機,改簽了 11 點的火車,然後……接著睡(。
所以最後下午 2 點到現場的時候,朱老師可能已經報警了。
到了現場,朱老師還在裝 DOMjudge,所以我沒事可干,只好配合朱老師先搞搞修機器的活。330 多台機器,如果不是以前的比賽用過裝好了,我感覺比賽就藥丸了,幸好大部分都是之前配置好的,朱老師可以遠程到機器上做各種配置。在志願者和上大負責技術的同學的配合下,我們成功修了幾十台因為各種原因用不了的機器。同時,朱老師還給各種機器重裝系統並同傳到其他機器上,但這一切我都沒法插手,無聊的我在冰冷的裁判室里瑟瑟發抖……
冷的差不多了 DOmjudge 終於裝好了,我先玩弄了一會兒(?),然後找了個壓力測試腳本跑了跑,不出所料果然爆炸了,朱老師查看了一會兒錯誤日誌,低頭思索了一會兒,修改了幾個參數,再壓就沒這麼爆炸了。事實證明,朱老師還是厲害!
根據壓力測試結果,一台普通伺服器在做了資料庫和前端分離的情況下,大概支持一秒鐘進行 20+ 次的提交,這個已經足夠比賽使用。登錄方面有比較嚴重的瓶頸,不過我們本來也打算用 IP 登錄,就沒啥關係了。
再配了配其他亂七八糟的東西,我們就回去了,朱老師在賓館裡還得接著幹活,我就回去裝死了……
熱身賽當天:修鍋,趕工
熱身賽當天早上沒太早去(我好划水啊……),大概早上 11 點?左右才到現場,此時叉老師 @ftiasch 已經在現場幹了一會兒活了。這次氣球和榜單由叉老師負責,這部分壓力很大,他工作時間又最緊,我感到十分抱歉,但叉老師畢竟是 only one carry,全裁判室最牛逼的人,頂著壓力自學 PHP,最終還是順利完成了任務,膜拜!
我在比賽前基本上就是讀代碼然後跟叉老師一起研究怎麼調用他的程序,這下才知道原來腦補的 DOMjudge 會自動調用氣球腳本是不存在的,是需要一個 Daemon 才能工作的,於是從代碼里扒出一個現成的開始改……然後在寫完後又因為 json_encode 的漢字編碼研究許久……
好不容易看上去都搞的差不多了,朱老師也配好了 8 台裁判機,我們就愉快的吃飯等待比賽開始了。說起這個飯,那是真的好,我這輩子都沒在其他地方吃過這麼好的工作餐,每頓有蝦有肉,美滋滋!不過就是米飯太少了,我吃不飽(哇.jpg),感謝上大(淚流滿面)
冗長的開幕式後比賽終於開始了,不出意料的是,果然全部爆炸了(滑稽):
1、隊伍不知道哪裡登錄平台。我們預先先做了比賽平台快捷方式,但是沒來得及做列印系統的,志願者忙瘋了……
2、登錄不上平台。這個就比較搞笑了,剛好發到隊伍手上的有列印系統的用戶名密碼,隊伍打開發現沒登錄,輸入發現登不上,朱老師一臉懵逼,不是說好的隊伍信息里配好 ip 就能自動登錄嗎?身為資深 PHP 專家(呸!)的我開始閱讀代碼,馬上發現 IP 登錄模式要在 config 里切換的……朱老師急急忙忙修改,又擔心不能用重啟了,結果重啟後修改結果沒了……只好又改一次(比賽所有系統為安全和容災全部部署在 docker 里)
3、氣球打不出來,我也不知道是什麼原因,反正叉老師很努力的修了半天……
反正一開始根本沒法正常比賽,朱老師不斷在對講機里說,等會兒!真不行!笑死……
修好後就是無聊的圍觀時間……熱身賽題目可能有點難,大家提交都比較少,系統也沒啥壓力(flag)
熱身賽後我們先去大吃了一頓(一開始的牛肉真難吃,後來居然出來了牛仔骨,最後才出來的,這餐廳真精!),然後回裁判室接著幹活。
晚上,我們除了修復熱身賽中出現的問題之外,還需要準備額外的東西:我準備導出信息的部分,也就是導出滾榜用的 xml;叉姐修氣球,寫榜;朱老師整理系統,清理熱身賽內容,布置明天機器環境等。三個人默默又干到凌晨 2 點……
正賽當天:修鍋,划水
正賽當天睡過了,起床已經 8 點 40 多了,匆匆忙忙退房趕去賽場,路上見到了騎著共享單車的叉姐,我打了個招呼,叉姐也打了個招呼,然後我就眼睜睜的看著叉姐消失在路的另一邊……
到了賽場才發現,又炸了……這次首先是不明原因的延了 5 分鐘(我現在還不知道發生了啥),然後聽說叉姐的氣球服務也炸了,這次是因為有隊伍的名字里有下劃線,用 latex 生成就(噗嗤)
然後延時 5 分鐘導致榜單錯了(其他人也提到了),有些人是按照正點開始算的,有些則不是,DOMjudge 要刷新榜單 cache 又特別慢,一血又迷糊,陷入了巨大的混亂……
當然,我是沒有鍋的,於是我就愉快的給他們提餿主意(被打死……)
半個小時後總算是大部分都正常了,似乎一開始有很多提交,朱老師從褲襠里掏出了 10 台評測機,解決了這一問題。比賽時也沒啥波瀾,主要是裁判不用按了,就是刷新看看 clar 回答一下就完事了,朱老師甚至認為以後裁判室放幾床被子就完事了(笑)
小花絮是我放在桌面上的快捷方式,朝鮮隊抱怨不會用(因為擔心有隊伍看不懂英文,寫的「點我打開比賽平台」……),朱老師馬上為他們修改成英文,避免了一次國際問題!
10點多周老師需求了一個 result.xml 用於生成榜單以及證書,我當時寫不太動了,就叫了 xml 達人 @TsReaper 寫了一個,兩個小時後正當我們心急的時候 tsr 交出了一個 8KB 的 python 腳本……
我腳都軟了,大佬,大佬.jpg
最後 10 分鐘湧進了 722 個提交,18 台評測機很難處理這麼多提交,於是最後賽後花了大約 15 分鐘才測評完畢。
賽後馬上導出交接各種數據,然後就是出去逛街吹水,晚上跟大佬們聚餐,學習了很多人生道理。
總結
正賽中收到的有效提交為 5171 個,相信可能也是國內首屈一指的規模了。5000 余個提交,如果交給裁判手動判罰,準確性和速度可能都要打個巨大的問號,因此大型賽區選用這類自動 Judge 感覺是大勢所趨。同時,我也感覺到,隨著國內比賽規模的擴大,指望一個人或者一個沒有任何相關經驗、水平不足的團隊完成一次競賽支持是非常不現實的,從今年國內各賽區的吐槽也能看出來,熱身賽沒有列印、編譯參數不正確之類的問題已經是家常便飯,機器上 IDE 跑不起來也是很正常,無奈今年賽題質量更糟糕,這方面的關注度反而變低了……
同時,隨著比賽的擴大化,觀眾對比賽的要求也變高了,周學長(崇拜!)負責支持的直播(選手屏幕、選手攝像頭)也將成為一個趨勢,而這沒有專業的設備和系統支持是不可能能做到的。這是那種頭腦一熱就接下承辦任務的學校很難處理的一個環節。
即使有著系統,系統中的細節也是一個需要時間和經驗沉澱積累的部分。上海賽區的由周學長開發的列印系統,在列印後還會附著條形碼,就是為了志願者送出時確認已經列印出來,而沒有在列印時不慎丟失,這一點相信絕大部分賽區列印系統都不會關注這一點。Final 的氣球系統,不僅會通知攝影師攝影,還會自動計算氣球運送路線,這都是多年比賽中發展出來的高新裝備。
在競賽技術支持上,國內高校還有很多要做的事情。
本次比賽中用到的工具以及之前說過的一些系統,我都會逐漸整理放出至 Github 上,請關註:ICPCCamp
展望
我認為,專業化的技術支持團隊是一個趨勢,無奈國內懂這塊的人可說是少之又少,畢竟一般人哪有這麼多機會天天操刀比賽?所以可以看到賽區辦的比較久通常會越辦越好(當然,某些西北賽區不在此列)。此外,現在很多時候是由出題(裁判)負責各項技術工作,這也並不合理,工作的分離也是一個趨勢,也恰好與上面的獨立團隊產生了呼應。期待之後的國內賽區在這方面能夠有所發展。
花絮
1、《他改變了中國——朱老師傳》即將發布,敬請期待(大霧
2、真可惜,如果最後不揭榜,海美大的 I 過沒過就永遠沒人知道了(。
3、我一定要改一下這個 DOMjudge 的醜比界面(。
4、我以為只是風評被害,今天才知道是惡臭樣例(很臭
很難過吧。。。考得完爆了。。。
。。。其實也沒什麼可以說的。。。都是蒟蒻的借口罷了。。。
。。。自己果然還只是半吊子水平呢。。。
。。。祝大家都能進WF。。。其實只要不要有遺憾就好了呢。。。
雖然我很遺憾或許不能走下去了。。。
886本來不太想寫矯情的東西了 但是看到隊友回答了問題 心裡還是有點難受
整場比賽體驗極佳 謝謝主辦方和命題組的辛勤勞動啦 是我參賽體驗最好的賽區之一
這是我的退役戰 來打之前說實話就沒有抱太大希望能出線 只想玩的開心就好了
整場比賽感覺完全就是自己這四年acm生涯的縮影 急功近利 前功盡棄
開始因為b題題意和隊友大吵大鬧 自己還是那個控制不好自己情緒的自己 後面慢慢進入狀態吧 封榜只有七題 幫隊友debug了h 當時意識有點模糊 就想著g寫個虛樹試試看吧 然後過得時候我整個人其實都是懵逼的 然後就是和隊友rush d 結束了兩分鐘終於出了樣例 但是一切都已經結束啦
去年ec後我情緒完全失控 哭的像條落水狗 隊友和教練在安慰我 自己的樣子真的是無助又可笑
今年結束後 大家都很失落 但是大家笑著眼淚卻在偷咽 我全都看在眼裡 我全都記在心裡
我永遠也不會忘記這一年的stayreal 忘不了忍耐我包容我這麼久的最棒的隊友 @Roooooo @Acesrc
謝謝你們 謝謝所有幫助過我的人 我一定會回來的!如何做好ECL-Final比賽後勤保障工作
請欣賞EFL-Final花緒短片
ECL-Final結束了,似乎可以算得上偉大的成功的勝利的大賽,謹向主辦方領導嘉賓獲獎隊員教練表示祝賀。作為組委會後勤保障人員,反思一下自己的所作所為及各種紕漏,向各位大佬報告下。
這是我第三年辦比賽,第一年籌備EC-Final錯誤百出,第二年China-Final似乎好了點,今年為什麼改叫ECL-Final我不知道,賽前上知乎把近年比賽評論看了下一身冷汗。
後勤保障籌備工作過程
先列下基本要準備的東西:
n 比賽服裝準備(隊員服*1000;教練服*200;志願者服*400;工作人員服*150)
n 參賽證*1000、教練證*200、志願者證*400、工作證*150
n 參賽隊員/教練IC卡設計製作、一卡通充值、結算(消費密碼666666)
n 比賽報名系統(確定參賽隊伍)
n 微信公眾號(微信繳費、一卡通結算)
n 官方網站實時更新、成績上傳(ICPC、EC-FINAL官網)
n 比賽宣傳冊製作(500份)
n 比賽宣傳視頻製作(5分鐘)
n 比賽橫幅(體育館外、體育館內、贊助商)
n 宣傳板(體育館外、體育館主席台)
n LED顯示屏(13米寬)(租賃)
n 比賽現場布線、網路施工、存儲
n 比賽用伺服器*4台(購買或租用)
n 交換機*43台(借用)
n 比賽用攝像頭*350(購買或租用)
n 比賽直播系統(租用)
n 印表機(4台,租用)、照相紙*1000張、列印成績證書、志願者證書
n 氣球準備(15000個)
n 獎牌(金*35、銀*65、銅*100)
n 獎盃(冠、亞、季軍)
n 行李卡牌、紙袋*1500個
n 高速電纜、PDU插座若干
籌備幾個月前就開始了,某寶、某東上到處選貨,最後訂了紅藍黑馬夾(很醜?),手機環行李牌之類的小禮品。參賽隊員因食品安全問題只敢送麵包及一些小零食,有人竟然說吃不飽,你們做題還有空吃東西?裁判工作人員志願者保安大叔就一起三明治奶茶,裁判室似乎很喜歡。
倒計時半個月,什麼都沒定好,要請領導出席致辭,到處打電話借東西,體育中心借場地,計算中心借電腦,伺服器不夠了要從外面借,印表機要借,LED屏要借,聯繫團委和學院招募志願者,聯繫教務處安排課程,聯繫安檢安保,聯繫攝影攝像等等等等。
倒計時一周,各種看場地,開會定N套方案,贊助商排名確定,組委會成員確定,宣傳冊內容確定,IC卡確定,參賽隊伍確定。本來計劃今年310隊左右,後來說要有320隊來,最後快到了330隊。壓力挺大,各種方案重新調整,要加電腦,加攝像頭等等。被請去各種喝茶,要保證安全,被各有關部門多次表示了親切的慰問。
這次300多支隊要註冊要交錢要做宣傳品,倒數四五天才基本定下來,於是繼續用了去年的微信繳費並改了交費系統,還要填稅號和發票要求,一天就交了200多隊,效率很高,結算也很方便。本來想開電子發票沒搞定,請財務處幫忙開發票,終於在報到前一天搞定。
倒計時三天,體育館課程結束後清場,鋪地毯搬桌椅,配交換機網路等,連夜將網路全部配好,搬伺服器,配地址,這是我們擅長的,一切無話。志願者也安排好了,兩晚的培訓,特地強調了因安檢不要帶水,似乎今年確實水少收到好多,保潔阿姨很不高興。
報到比賽過程
倒計時二天,某領導接到某國某隊伍電話,語言不通,簡訊不通,引起國際糾結怎麼辦,幸好找到精通某國文化的某美女老師,陪同安排去派出所開證明並完成入住,感謝美女老師這幾天一直陪同。
周五報到日當天,各路神仙從四周飄到體育館冰冷的裁判室,朱健惟是少數幾個叫得出名字的,那天似乎是鞋濕了,看到他一直穿著拖鞋,不冷嗎?還有一個壯壯的TX似乎很厲害,周老師和張同學他們一群志願者一直在忙碌,我一直擔心的去年那批老機器似乎也沒那麼多問題,一切都在計劃中。
周六開幕式練習賽當天還是忙忙碌碌,到處請人上主席台就坐,主持人MM準備的一張名單不見了,趙宣昴名字不出意外地報錯了,俞勇教授站在樓梯口開始沒找到,半小時的開幕式被過分熱情的嘉賓整成了一小時,原定的贊助商技術宣講也都超時了。三點練習賽開始時開始各種問題,所幸強大的技術組都搞定了。
練習賽結束趕到樂乎樓蹭教練自助餐,結果都快清盤了。某教授不斷與各校領導教練親切交談,最後與某領隊和教練進行了誠摯的交談和親切的慰問,直到最後被餐廳工作人員關燈以示抗議,移至大廳繼續進行友好的慰問。當晚各種事情深夜回家倒頭昏睡。
周日正式賽志願者七點半到位後已分發各種物資檢查機器,一切就緒準備開門迎客,突然發現試題竟然沒發,趕緊找到志願者負責人,發下去後少了試題(後來說找到了?),緊急把教練的試題發下去後有參賽隊說沒密碼。怎麼辦?我真的已經慌了,千鈞一髮之計,偉大的朱健惟博士及一群偉大的技術專家拯救了世界,竟然能夠通過綁定的IP無密碼登錄系統(後來才知道今年不用PC^2,改用DomJudge,在練習賽時就已經決定無密碼直接登錄了,實在是太英明啊!),比賽延時五分鐘後還是正常進行了,各種小問題後似乎一切又OK了。五個小時中我無所事事的,在賽場內外到處搬東西拍照,給裁判們送水送飯送衣服。
正式比賽結束,裁判室一片忙亂,為了防止過分熱情的群眾,裁判室只進不出,我便成了門衛。其中和做滾榜的TX對各種數據,和閉幕式組對嘉賓名單,到處請人準備上主席台,和技術對獎項清單,看得出大家都已經很累了。結果最終出來了,閉幕式組已經急得不行,把所有預備文藝表演節目都上了?給我五分鐘,馬上做好PPT發過去,沒時間改字體,主持人MM戴上眼鏡也看不清,都是我的錯。
閉幕式後結束後當夜收拾賽場,場地已清空一片狼藉,裁判室列印室留了很多沒領走的證書獎牌書包,350台電腦要搬回計算中心,伺服器交換機都要拆回去,物資都要搬回去,晚上十點多電腦終於搬好了,一切都已回到從前,終於可以安心回家睡覺了。睡前看了眼評論,都很客氣沒罵我們,就此昏睡過去。
各種意外
幾天前負責網路的羅老師為了不讓他的豪車被徵用拉貨,當即一頭撞上燈柱以逃避責任,大家對他的行為表示深深的不齒,老司機認為當然是燈先動的手。幸好還有周某、柴某及某某車可以徵用,用來拉各種貨物,伺服器、衣服、食品、包。。。
周五報到時因雙十二各種物資都還沒有到,報到接待組急得不行,宣傳冊沒到,衣服沒到,手冊沒到,最後一批是在練習賽時才送到的,以後辦比賽必須避過雙十一雙十二。
測試證書列印時各種卡紙,原來買的照相紙太好太厚了(敗家),於是同事趕緊聯繫再買薄點的,京東大叔送貨到了體育館,讓志願者送到列印室,結果到處說沒找到,後來發現是裝在某婦女用品紙箱內,沒人敢去拆。
練習賽前各種意外就不多說了。其中裁判室掉電半小時,電工說過載保護了,趕緊把接到裁判室的安檢門電源拉掉,再當即拉了電源雙路供電。聽說列印室的電源插座也壞了一次,不是好兆頭。。。
最大的危機在正式賽,準備讓志願者列隊歡迎入場,突然發現桌上沒試卷,眼前一黑。趕緊找出來讓志願者發下去,志願者隊長一直在叫不行了來不及了,9點到了終於來不及很丟臉地去喊了比賽暫停,萬幸五分鐘好還是開始了,萬幸後來沒有大問題,似乎還有問題也是大佬們解決了。
總結與致謝
辦好一個比賽是要花費大量的時間精力,不是一個部門幾個人能全部搞定的,個人感覺辦好比賽首要的是題目質量和參賽隊伍的水平,其次是系統環境和技術支持的能力,再次是相關的組織協調能力,最後才是賽場環境和物資準備情況。
在這裡代表上海大學組委會感謝谷歌命題和裁判團隊:李益明,趙軒昴,崔翱翔,何雲鵬,李貝瑀,陳子暘,唐飛虎,趙林嬌,他(她)們歷年的命題和裁判工作都是非常出色的。看到李益明又穿著短袖,讓我們穿著保暖衣還凍得發抖的情何以堪?感謝趙軒昂開幕式精彩的致辭,感謝李益明和趙軒昂滾榜時緊急救場。
還要感謝技術團隊,朱健惟挽救了這次比賽,他這幾年一直是很早來了,來了就開始調系統和機器(後來才知道他前面還生病,幾乎這二天硬是把整個DomJudge調好了,這一般沒一星期半個月弄不好的)。今年似乎還有浙大的壯壯的戴龍翱,我一直為他那把塑料椅感到擔心。周智愷是每次比賽他都在那裡默默地工作,來斯惟我人對不上,加微信想請他上去講滾榜,被他婉拒了。還有郭曉旭,還有劉芳和許瓊丹,還有周老師帶來的許多學生志願者,還有很多來幫忙的叫不名字的人。
上海大學組織和後勤保障團隊已經算有一定經驗了,籌備協調會上從校長到學工、信息、宣傳、教務、計算中心、團委、保衛、外事等各部門領導都打擾了,還有機自、計算機、體育、音樂、電影等幾個學院鼎力相助,感謝學工辦吳蔚、王平、王利、富旭等幾位老師;感謝信息辦我的同事夏上雲、黃曉琳、呂露、扶莉、羅琨、周明浩、柴劍飛、曾楊、林家欽、倪衛民、朱文浩、饒國賓、朱玉俊等;感謝周老師、沈老師及其他許多為比賽服務的專家和工作人員。
忘了表揚志願者,這次團委和機自學院似乎分別組織了一批志願者,計算機學院吳坤蘭同學帶領的一批志願者分工明確,各人負責聯繫一個學校,賽場中每組分別負責一片區域,每人負責幾個隊伍,這次10000多個氣球都是這些隊員一路小跑送來的,確實很辛苦,大家最後都吃上午飯了嗎?機自張錄同學帶領的一群技術志願者作用更大,去年他們也在,比我還清楚哪些機器有問題,許多的問題都是他們解決的。
後記
有時間的話,我準備將工作組、志願者服務組的工作職責和工作清單理一下,作為以後組織比賽的參考,並針對往年各種情況提出改進方法和措施。
另外有個想法,比賽伺服器放在體育館的風險還是很大,環境與標準機房差了很多,如果把比賽伺服器就放在學校數據中心,並與比賽環境劃為一個單獨的虛網,實際上可以避免當場安裝和調試,提前開個外網VPN遠程就可以裝好系統了,朱健惟在家喝著茶吹著空調就可以拯救世界了? 另外判題用台式機性能可能不夠,用伺服器怎麼樣?
最後歡迎大家來上海大學打比賽,你們能高興就好!話說明年Final還在上海大學嗎?
好像acm生涯沒什麼遺憾了呢!感謝隊友!
要開始從演算法競賽選手努力轉變成一名真正的程序員了呢!神仙打架.jpg恭喜黑人問號.jpg捧杯啊,大賺一筆啊,羨慕,請客請客!
————————搶一血大成功,托qls的福可以美美的吃一頓海底撈了!後續待更
每一場現場賽意味著折了至少兩周的壽啊喂
domjudge確實好用(但是不代表沒bug,然後我又坑進去了
出題不表(零散的時間太難估計用了多少,只記得自己幫忙寫E標程,花了好幾天吧?比賽前一周折騰domjudge的配置(各種想著能不能寫個奇怪的程序過題結果發現比pc2好多了,至少直接讀input過不了題了 ),研究了下出題組這邊的需求,主要是數據格式、支不支持多文件、spj等等
比賽前四天每晚倒騰數據(數據生成,題面,寫各種script來組織題目archive,恕我直言domjudge的題目包結構好奇怪啊,把數據存資料庫里真的不會負載爆炸么,也許是我想多了吧),dalao代碼存在用bazel做構建的repository里,寫genrule寫的我懷疑人生,在這裡安利一個(小項目完全沒什麼屁用的)構建工具http://bazel.io
翻了翻評論,大家玩得開心就好(?)靠著10個1Y罰時取勝,拿了個季軍,前面差不多二十個隊只有我們沒過g題,菜的不行。
題目質量還是挺高,不過中檔題以及逗你玩題比較多,前面一堆的九題十題。f題我們過得比較快,過完以為有一血,結果發現另一個隊老早就過了。
感謝上海大學,感謝谷歌出題組,感謝志願者小哥哥小姐姐們(好多漂亮小姐姐,絕贊好評12.17 更新
–––
先佔坑。
今年的最後一場比賽,也很可能是我生涯倒數第二場比賽,只希望能拿點獎金(拿去氪金這特么比賽怎麼全是思路智商題啊
共享單車賊多,西邊一堆吃的,賓館樓下正新雞排還不錯,還有燒烤,就是沒去吃而已,略遺憾
比賽那天7點半的鬧鐘我們硬是賴床賴到8點半才從賓館出發去吃早飯(
比賽一開始,進入系統後特么滑鼠游標隱形了????因為這個耽誤了一點時間然後就是狼狽跟榜,我順手撈了個一血,逗你玩的 C好像還有一段時間大家都卡題了?陷入了空機的絕望給 L 打表的時候,各種打錯,跑到n=15的時候電腦死機,誒穩了,交,Wa,emmmmn=16 靠,有毒,AC,辣雞打表F 由於討論了挺充分,所以並沒有花多少時間就 A 了,我終於在正式比賽 1A 了一道像樣的題目啊哈哈哈哈最後的 G 十分刺激,我提供了個 KM 複雜度演算法,死活 TLE,最後一分鐘呂老闆改了改,測樣例發現範圍錯了樣例都跑不過,剩 20s,交了交了不管了然後就十分 Sad,感覺搞不出 G 就拿不到前三了啊,然後就看到了 G AC 的記錄?!?!?!?!!以及比賽前還想著拿個季軍撈點錢
結果怎麼就被學校殺了啊
化身金牌榜首
悲傷啊(
還有這出題人怎麼這麼草啊
這樣例好臭
訴 訟 不 可 避
以及我怎麼就變成了單挑冠軍隊啊
這報道出了偏差啊(來自新日暮里的少女
以及表白志願者小姐姐,散場後還幫忙我找一個手提袋,雖然最後沒找到但還是挺感謝熱心的小姐姐們(此處應有比心
至於我在上海刷了多少 Ingress 任務就不說了(((
不邀自來。
主辦方很熱情,又有衣服又有包,還有一張 80 塊隨便刷的卡。
題目也很棒,除了首尾兩題,其他題目都不是能一眼看出解法,需要深入思考的,感覺很有競賽的味道。
然後這個賽季就結束了呢......回顧一下,天才卡題少女總共打了一場CCPC,一場ICPC,一場 ECL-Final,最後以兩個捧杯和一個 rk3 的成績落幕,還是很滿意了......對自己而言,至少讓我能從 OI 時代清華集訓+冬令營接連滾粗的失敗陰影中走出來,覺得自己還有救,能稍稍打起精神面對殘酷的大學與人生了?
總之,感謝隊友 @NanoApe @王聿中 的陪伴與支持!
Case後面忘輸冒號wa了一發,最後和第一名差20分鐘罰時
價值4w的冒號前期手穩真的重要,封榜前除了B因為一些處理上的問題都是1A,封榜的時候7題rank1,結束之後算了一下,7-&>9的應該都在我們後面,就喊了一聲穩了
還是詮釋了那句「穩定切水=拿金」,整場比賽做下來除了G感覺都是比較簡單的題目,雖然隊友前一天晚上坐飛機趕過來,但是狀態完全沒有變差。
感謝出題人G題數據水放過了亂搞做法
L題WA了一發之後我隨口說了一句:「會不會有偶數也是先手勝」,然後怒打n=14 16的表,發現woc這tm什麼鬼……最後一個經典而大膽的猜想過了
評測隊列真的有點長啊,但是Dom judge好評,有spj好評,感覺評測隊列平均下來有一分鐘吧
全校打ec的就我一個不考四六級,一個人帶10個人的東西走一公里到酒店
回頭率超高的!
======
延續了我的隊隊名=flag的傳統
第一年:fft =&> 對著fft想dp…
第二年:tptyuuy =&> 卡字元串
第三年:絲滑拿鐵 =&>除了鐵全拿了
我能怎麼辦,我也很無奈啊
雖然還是想吐槽這個E和I的出題套路,不過google今年的不讓選手掏出模板的出題思想值得鼓勵,除了E和I外碼量都很小,對老寒手的老年人特別友好。
幾個無關緊要的點:
- 正好前隊友回國開會,所以難得的組成了16年final的陣容。三個半年不寫代碼不做比賽的人怕給母校丟臉,臨時加入了海女美術大學。
- 熱身賽的時候非常絕望的發現真的什麼都不記得了,水平退化到開始糾結scanf讀入double是%d還是%lf
- 正賽開場交A就掛了,開始懷疑人生質疑自己怎麼能這麼菜。懷疑了十分鐘列印送到了發現是輸出忘打Case #
- 比賽結束的時候一個先生衝過來說:「我網上搜了半天沒搜到你們學校啊,海女美術大學在哪啊?」我愣了一下:「上、上海?」
- 碰到了XraY小哥,16final以7分鐘罰時優勢幹掉我們隊的世界冠軍。這人現在AIMFund的香港分部搞量化交易,作為贊助商來了ECL。一起回憶了一下比賽舊時光,聊了聊為啥彼此都不讀PhD而去金融行業。不得不說俄羅斯確實沒多少人願意申美國名校PhD(當然對他們來說比中國學生還要難一些),無所事事的高手們熱衷這個破比賽,所以之後一毛獨大的局勢將越來越極端。人生啊(ry
- 下次應該在翻榜前好好的和裁判們商量一下演一波,既然冠軍都翻出來了就別再拆我們的I的提交了嘛,留個傳說不更好(滾
- 縱使今年ICPC區域賽破事一堆,ECL-final在一群拯救世界的裁判們和改變中國的技術志願者們的付出下,依然可以做到以前的水準,給玩家們最好的遊戲體驗,這些人才是這個*CPC比賽繼續下去的核心支柱。
- 15年在這裡被dls+cls擊敗,17年莫名其妙的打了回來(雖然只有dls一個人了),希望之後還能有老年人大戰的機會。
演算法競賽真的是個好遊戲,希望大家玩的開心。
青島兩題隊伍痛定思痛,上海努力寫了9個題。
StayReal這個賽季的比賽也全部結束了,最後一場比賽的體驗真的很棒!題目非常有意思,列印和氣球也很快,志願者們人都很nice,可惜還是實力不夠沒能圓出線夢。
整場比賽都打的很不順,先是卡J題卡到2小時又接著卡H卡到封榜,比賽結束前想到了D的正確做法,三個人一直努力到最後也沒能來得及調出來。雖然很早之前就和zls一直說退役賽開心就好,但比賽結束了之後還是覺得帶著遺憾很難笑的出來。
最後,無論如何都要感謝zls@鄒事成和lh@Acesrc這一年一起努力訓練,帶著我打了一個非常非常難忘的賽季,和你們參加過ACM真的是太好了!題目出的真的是非常非常有意思運氣非常好地猜對了很多題的結論賽前訓練是有用的!比如我在前兩周剛好學了學狀壓記搜博弈,然後今天打表用上了,並成功地跑出了1-17的答案,然後發現16有奇蹟。收集狂栗子GET了第一塊ICPC金,非常激動!希望下次能取得更好的成績~
我們隊一年湊齊了icpc金銀銅
謝邀。
三個小時過去自己身體突然就不行了,說幾句話就噁心,下肢沒什麼力氣頭也有點暈。
可能感受到了ioi時dls的絕望吧。
最後兩個小時躺在地上看dls做F。
想著如果我還健康能做到什麼,但這思考已經什麼也做不到了。
望大家注意身體。共勉吧。
從2008年算起,今年恰好是我參加演算法競賽的第十年,從文理附中,到紹興一中,再到交大,從普及組,到提高組,再到acm,仔細想想,原來真的有十年了。這十年里,背負了一些壓力,掉了一些鏈子,又輸掉了一些重要比賽,然而慶幸的是,在十年後的今天,我依舊在用我自己的方式戰鬥,鬥志昂揚。十年後的今天,我依舊對卓越和勝利保持著無限的渴望。十年後的今天,我已經視戰鬥如生命,卻不再為了戰鬥而戰鬥,我有了願意為之戰鬥一生的夢想和責任。有些事情,是一定要有人去做的。我可以去做那些沒有人願意做的事情,我可以付出一切,當別人眼中的傻瓜。我可以被擊倒,可以被打敗,可以被嘲笑,可以被看不起,但不可以放棄。倒下一次,就站起來一次,倒下一百次,就站起來一百次。當你不再為了變成下一個誰而努力,當你慢慢了解並且不再抗拒自己,就沒有什麼是做不到的,你有你自己的人生,你只能是唯一一個你自己。沒有誰是常勝將軍,也沒有誰註定為失敗而生。在年輕的時候,請肆無忌憚地去夢想。
前面嚴重跑題了。
--------------------------
很幸運能重溫站在這片賽場上的感覺。老年人幾年沒有寫過題目了,在智商和手速上退化得都非常嚴重。雖然是打星參賽,沒有成績上的壓力,但我對上海大學的感情是複雜的,三年前在這裡,因為感冒和壓力,我很無力,最終獲得職業生涯中唯一一塊銀牌,帶著強烈的遺憾退役。所以這次的比賽,對我,是很有意義的。」這裡是我第一次拿銀牌的地方,也是我最後一次拿銀牌的地方。「 也許內心深處,我還想向自己證明一下我自己?我雖然變菜了變弱智了,可並不代表著我已經完全不想贏了。
總結一下我個人在比賽中遇到的問題和心路歷程。上來7min簽了M,寫題的時候已經非常小心了,檢查了一遍題意,檢查了一遍代碼,才敢提交。
讀K,看不懂。又看了一遍,終於懂了。水題,很快寫完。檢查一遍,提交,WA了,不可思議。與此同時,A題D題全部卡帶。
查出A題,原因是局部變數test一開始沒清零。K題一開始就知道讀入時用%d讀了long long,一直拍拍腦袋覺得這樣讀沒關係,選擇無視,但二十分鐘查不出其他錯,所以認定是他了。改了提交,過了,證明腦袋裡的經驗已經不是很可靠了。
在這當中,rank直線下降,迅速掉出100開外。開場的輕鬆煙消雲散,緊張感油然而生。7:30起床對於我們這種老年人實在是太困難了,這時候還完全處於夢遊狀態,並沒有睡醒。B題覺得可以二分,上去寫,但腦子完全想不動,掙扎著調試,終於過了樣例,提交,T了。覺得是因為寫得太過奔放,摳了點複雜度,再交,再T。突然發現數組開小了,但覺得數組太小應該是RE而不是TLE,不敢提交。展開公式,發現可以用堆搞一搞,就上去重寫了一遍,用堆搞了搞。調試的時候開始痛苦,出現了各種下標打錯、少乘係數、把eps = 1e-9中的eps隨手定義成int的情況。掙扎著終於過了。
L題這麼多隊過了,肯定可以打表找規律。那就打表找規律,打到了15,非常nice,先手必勝平局交替出現。自信提交,wa了。只能繼續打下去,16的時候是後手必勝,17先手必勝,18爆內存。再猜一猜,過了。
看e題,樣例的輸出給到了48,想搜又不確定能搜,也沒有時間搜。
在隊友的英勇發揮下,最終10題。但由於罰時的巨大劣勢,rk14,不算滿意,也不能算不滿意。
感謝隊友黃過億、李百萬,感謝客串教練來自對岸的高三千,帶著施一塊再上賽場。感謝這麼多年來在競賽道路上幫助過我的老師,尤其是俞老師和游老師,教會了我許多道理,讓我這輩子再也不甘平庸。感覺教導我的學長們,如果說我有那麼一小點一技之長的話,那也是全部師從於你們的。感謝一起並肩戰鬥過的隊友們,是你們讓我懂得了團隊的力量,讓我不再感到害怕和孤單。感謝可愛的學弟們,是你們支撐著我的夢想,讓我明白了後生可畏。感謝見過面或沒見過面的對手們,是你們的存在,將我最終磨練成為一名合格的戰士。感謝紹興一中和上海交大,兩個截然不同的團隊兩種截然不同的風格帶給我的兩份截然不同的氣質。沒有你們,我終將寸步難行。
競賽帶給了我什麼?競賽帶給了我一個全球化的舞台,帶給了我一群攜手共進的摯友,帶給了我一段為期十年的美好回憶。回到十年前,如果可以再選一次,就算充滿了艱辛,就算有痛苦,我仍將義無反顧地走上這條相同的道路。
Wannafly也快要一歲了。希望明年我們依舊不忘初心,為大家帶來更高質量的比賽。我們的聲音雖然渺小,但我堅信,滴水可以穿石,星火終將燎原。
下一個賽季,讓我們一起去戰鬥!
--------------------------
趕了一天的路,邏輯混亂,請大家見諒。等大腦清醒的時候,再改一改。
推薦閱讀:
※大學競賽的問題?
※賽氪是個什麼樣的網站?
※yangzhe1991和yangzhe1990是什麼關係?
※一道趣題:如何通過調整角度使探照燈照亮整個平面?
※關於LCM(1,2,...n,n+1)與LCM(C(n,0),C(n,1)...C(n,n))的關係?
TAG:ACM競賽 |