1. 程式人生 > >2017年山東省第八屆acm省賽總結

2017年山東省第八屆acm省賽總結

        作為一個即將退役的大三隊員,這屆省賽對我來說就是最後一次比賽了,同時也是最重要的一次比賽。在去年的省賽中,我們隊發揮的不理想,沒拿到獎牌,因此今年就是最後的機會,我們隊在這一年中也準備了很多,其中也有過放棄,失望等時期,不過好在最後都堅持下來了。其中對我來說,最大的問題就是壓力了,因為我是這個小隊的隊長,這一年中,我總是時不時回想起去年失敗的情景,隊友們失望的表情我現在都記憶猶新,每次這時我都懷疑自己,批評自己,總是做不到一個隊長應該做的事,沒有一個隊長應該有的實力。今年省賽的前一星期正好趕上春假,實驗室所有人都要為省賽作最後的準備,而我在這段時間壓力變得最大化,晚上時不時做噩夢,夢到我們隊死活做不出題,眼睜睜看著排名掉出獎牌區,然後半夜就醒過來了。出發前我給自己訂的目標是,至少要拿到銅牌,當時的我根本沒想到,這次的成績,包括這次學校的成績能夠如此輝煌。

這次比賽是在青島科技大學,已經不知到這是第幾次來青島了,這次住的賓館還不錯,只不過第一天中午吃的是盒飯,說實話不好吃,有個隊友還中招了,結果下午拉肚子。熱身賽的時候,我們還算順利的A了最後兩題,第一題想了很久,我最後想用記憶化搜尋搞,結果老是RE,比完後和別的隊交流才知道這題資料水得很,暴力就能過,無語。晚飯是在賓館吃的,這次還真的不錯,不過後來聽說那兩條鹹魚居然值兩百塊。當天晚上我們隊討論了很久的戰術,一致決定先集中精力快準狠搞定水題,不去看別的題,時刻跟榜,之後數學題就交給數學大神cxf,我和sxx做別的題目。

第二天正式賽的,比賽前五分鐘左右就能看題,我們立馬就找到了第一個水題,快速冪的模板題,我們都能背下來,因為是我是主coder,所以我來敲這道題,期間cxf又找到了一個斐波那契數列取餘的問題,稍微推了推就找到了110的規律,就是一個大數對3取餘,聽說很多隊都是用JAVA大數過了,不過我們是用的大數取餘模板。我的第一題很快就敲完了,測試了幾遍覺得完全沒問題,因為題目本身就簡單,就很自信地交了上去,結果居然WA了,沒辦法只好把程式碼存下來,再讓cxf去敲他的大數取餘,好在1A,交題的時候彈出來了通知,我稍微看來一眼好像就是說我的那道題有個改動,結果cxf立馬給關了。。。題目交對後我就去看通知,原來是我那道題模其實是1e9,題目寫的是1e8,坑爹啊,我把程式碼加了個0就過了,兩道題10分鐘就過了,然後看了下排名,還在挺前面,就放心地找別的題,cxf找到一個一元二次方程組的,不過樣例沒看懂,我和sxx找到了倒數第二題,我們討論了一下覺得是貪心可搞,我就開始敲了,敲完後測試了一些樣例,都過了,覺得可以交,結果WA了。sxx把程式碼打印出來找bug,我和cxf討論了下樣例,題意”是對於任意的x,如果滿足a*x^2+b*x+c=0,那麼x是整數“這個命題是否為真,第二個樣例是0 0 1,一元二次方無解,但答案卻是真,我們想了會,覺得這個命題是一個蘊含式,如果前件為假的話,命題肯定是真,應該就是這個思路,然後cxf就開始敲題,期間sxx也找出了bug,不過我們要先解決這個問題,cxf測試了一會,覺得能交,但結果還是WA了,我們只好又開始改前一道題,改完了sxx說的bug後,sxx又說資料範圍是不是要改成long long,我覺得資料最大也才200*200,應該不會超,就沒去改,結果交了還是WA,這時候我們都有點失望,錯了太多,罰時肯定很多,但還是隻能硬著頭皮繼續改,這時sxx還是堅持測試下long long,她把最大的資料輸進去後,發現果然超了int,我當時就很尷尬,看來凡事都不能憑自己的主觀判斷,改了資料型別後,這次我們都很謹慎,測試了很多遍才敢交,好在結果是A了,刷了下榜,發現大部分都是3題和以下,我們還在銀牌區,現在就cxf的那題可搞,我和sxx就去幫cxf,最後還是cxf重寫了下程式碼,在100分鐘左右A掉了。

現在我們判斷水題應該都被我們解決了,雖然我覺得這四道都不怎麼水,看了看榜,也就剩下c題可做,題目不難理解,一個煙花在一個單位時間向左右分裂成兩個煙花,那兩個煙花再在下一個單位時間分裂,但就是沒思路。我們想了快20分鐘,期間也看了看別的題,都沒思路,我只好模擬一個煙花在接下的五個單位時間分裂的數量,突然發現正好構成了一個楊輝三角,時間就是層數,每一層的中間就是原點,其他位置的數正好就是那個時間相對座標所擁有的煙花數,只不過這個楊輝三角的每個數之間有一個0,我把我的思路和隊友說了,他們也都覺得是這個思路,只要能夠找到楊輝三角的公式就行,cxf立馬想到了楊輝三角的每一層就是組合公式,因為資料很大,要用盧卡斯定理,逆元和擴充套件歐幾里德算大組合數,這是cxf的強項,於是cxf就把書上的模板敲了上去,接下來的問題就是如何處理每個數之間的0,我想不出好方法,sxx覺得要用偏移量處理負座標,cxf想了好幾個方法但都不對,我們就在這上面耗了一個多小時,期間刷榜發現還是在銀牌區,看來大部分隊伍對剩下的題也是沒有對策,結果還是cxf,我們的數論大神經過深思熟慮後想出了一套公式,敲完的時候他想讓我們想一些資料,但我們組已經快兩個小時沒有交題了,這時候已經封榜,而且這題資料也挺難想的,就先讓他交一發試試,結果等了幾秒出現的結果是一個綠色的YES!當時真的是激動的快要跳起來,封榜前我們隊伍在銀牌區的下游,離銅牌還有十個隊伍,如果我們一道題都沒做出來,很可能會掉到銅牌,但能做出一題銀牌就肯定穩了。最後的四十分鐘決定開d題,我想了一個搜尋的思路,敲了敲,無果,cxf找到了一些規律,但就是寫不出來,就這樣一直到最後結束比賽,我們隊伍做出了五道題。

出來的時候我們組都挺高興的,去年打鐵,今年很有可能拿銀牌,我不止一次懷疑是不是在做夢。最後滾榜的時候,青科的兩個小螢幕從遠處根本看不清,還是拿手機勉強看到我們隊一開始被擠下銀牌區然後飛上去,銀牌是穩了,驚喜的是這次學校有三個隊伍拿到了銀牌,結束了只有金牌和銅牌的歷史,sxx還解鎖了一個成就,歷屆acm隊長都是銅牌,她成了第一個銀牌隊長,總的來說收穫很大。順便一提,當前晚上實驗室所有成員和老師玩狼人殺玩到凌晨。