范围元【2013 GDCPC】有为杯 广东ACM省赛小总结
文章結束給大家來個程序員笑話:[M]
????第一次加入生賽,心情萬分激昂,我不是大牛,但是在子畦大牛的率領下,剛好排到了校賽的第20名,升級省賽。
????廣東的ACM省賽弄得非常好,無論是職員安排還是舉辦方對參賽隊員的照料,競賽時光是從上午的9點半始終打到下晝2點半,延續5個小時,地點是華南農業大學。
????我從來對由第三方提供的飲食沒有什么信念,所以自己還買了個10大洋的三明治(美心的三明治做得很好……),但是等我看到提供給參賽選手的午飯后我才覺得那個三明治真弱啊。中午大概12點,每位選手會發一袋,對,是一袋午飯,里頭有——大牛角包,香蕉(感到是華農自己種的?因為這條香蕉的味道不太專業),一個三明治(普通面包店能買到的那種,不過量更足),一支華農酸奶,一條Kinder夾心巧克力。不錯不錯,當然礦泉水是一開始就有提供的。
????競賽很好玩,從A~K一共11題,每題對應一個顏色的氣球,最對的步隊就會有工作職員在桌子上豎一個氣球。對于各題,拿到first blood的步隊還有額定的獎金
????所以加入競賽的感到就是很快樂,不過這次我們全隊發揮變態,這是另外一個悲傷的事。好了,還是直接上題目上總結吧,題目是全體英文的,不過我翻譯成中文好了
????——————————————題目——————————————
????*A題:
????(前面一大堆描述分析temple run2這個游戲,然后重點來了)人物每次身后,可以消費一定量的鉆石來使用“Save Me”功能,在沒有升級的情況下,統一局中多次使用Save Me將依次消費1,2,4,8.....個鉆石,每升級一次,每次消費的鉆石就減少1個,例如升級一次后,依次消費1,1,3,7……起碼消費1個。問在升級了M次后,第N次使用Save Me會消費多少鉆石。
????最水的題目,直接cout<<(pow(2,N-1)-M)<1?1:(pow(2,N-1)-M)<<endl; 就能夠了
????
????**B題:
????(前面一堆描述……還畫了圖,非常具有誤導作用,現實概括后就很簡單)限定m*n巨細的數列,給定K個數,然后對數列可以進行Insert(a),Remove(a),Find(a)操作,執行Insert如果超越數列容量,則把數列中最大的數拋棄,然后插入;Find操作則輸出是否存在a即可。
????這也是水題,惋惜我們在這題上耗費了太多時光,哭,為什么耗費了那么多時光呢,因為這題的數據結構是手敲的……現實直接使用STL的set就能夠了,我是在競賽結束后突然間發現傻了。唉,STL啊STL,沒想到每次大競賽最會這么敗給STL一次。
?????C題:
????沒有看……遲點有空我補上
????***?D題:
????不好意思……這題太蛋疼了,和編譯原理有關,遲點有心情再看題補上
????******E題:
????有N元(1<=N<=10^18),可以兌換成1,2,5,100,5000,10000元,有多少種將N元完全兌換的方法?最后的結果對1000000007取模。
????賽后CYL師兄講題的時候說這是本次競賽最大的一個坑,因為其題目極其冗長,題意極其簡單,但是現實上是本次競賽的壓軸題。具體的崩潰方法我來不及記,大概就是把N從大到小分解,然后可以發現一個什么東西,然后用矩陣求冪。下面的,我就不知道了……
????***F題:
????Alice和Bob的寵物小精靈互相對打,能力值高的精靈贏,每只小精靈只可以進場一次。Alice在每只小精靈贏,平局,輸后,分別會取得X,Y元,或者損失Z元。現在給定Alice的前后進場的小精靈的能力值,然后再給出Bob的小精靈能力值(不按進場順序),問Alice的期望收入是多少元。數據范圍:每個人的小精靈數目N相同且范圍是(0,100000],X,Y,Z的范圍都是(0,1000)。
????這題非常捶蛋,不知道為什么就是Wrong Answer,到最后結束也沒檢查出來,其實就是分別統計Alice每只小精靈的收入期望,然后再把Alice的全體小精靈的收入期望加起來。如果直接使用線性統計每只精靈的期望,那么復雜度將打到O(n^2),會超時,所以要先對Bob的精靈按照能力從小到大排序,復雜度是O(n*log(n)),然后對Alice的每只精靈,再Bob的精靈頂用2分查找找到能力值一樣的精靈,如果找不到那么也會找到分界點,這樣可以倏地統計多少只精靈是負于Alice當前的精靈,多少只平局,多少只勝出,然后直接計算即可,復雜度是O(n*log(n))。這樣算法總的復雜度也降到了O(n*log(n)),這樣就不會超時了。也是水題,惋惜就是不知到哪里寫錯了
每日一道理一個安靜的夜晚,我獨自一人,有些空虛,有些凄涼。坐在星空下,抬頭仰望美麗天空,感到真實卻由虛幻,閃閃爍爍,似乎看來還有些跳動。美的一切總在瞬間,如同“海市蜃樓”般,也只是剎那間的一閃而過,當天空變得明亮,而這星星也早已一同退去……
????****G題:
????N堆石子,每堆的數量起碼為1,不超過10^18,Alice和Bob輪番取石子,有兩種取的方法:1. 只取走1個石頭 2. 在這堆石頭有2個或以上時,可以取走一半(奇數時取走(N-1)/2,偶數時取走N/2)。給定有N堆石子,每堆的數量ni,問誰會贏。
????這題本來是交給子畦做,但是因為沒有溝通好,所以寫完程序才發現題意理解錯了。唉,悲催,時光啊。后來在賽后講題時發現他們說若只有一堆時如果數目>=2則先手必勝??為什么呢??按照分析應該是找出不安全狀態(可以搜索nim問題,或者可以看一下《編程之美》對于nim問題的解答),然后再遞推。我今晚再問一下周生這題怎么做,到時再更新。
????****H題:
????N*M的矩陣里頭有若干老鼠,初始情況下每個格子最多1只老鼠,當鈴響一次,老鼠就會隨機挑一個相鄰的格子并跳入其中,如果在統一個格子有x只公鼠,y只母鼠,那么它們會產下min(x,y)只小老鼠(看來是一夫一妻制……),這些小老鼠之后并不會交配產子,即可以把小老鼠當做是無性別的。問經過R次鈴響后,小老鼠數量的期望值是多少?數據范圍:N,M和R都是[1,10]
????這題的數據范圍小,不過我們并沒有想過這題,也是等我問完周生怎么做,再更新吧。
????***I題:
????N個節點,M條邊的有向無環圖,問每個節點可以達到的節點數有多少個(包含自己)。數據范圍:N是[1,10000],M是[1,100000]。
????用STL的bitset容器
????****J題:
????給定N和K,整數序列S如果同時滿足下面3個條件,那么就稱之為煩悶序列:
????1. 數列有N個整數
????2. 每個整數要么是0,要么是1
????3. 同樣的數字連續出現K次以上(即K+1或以上次)
????例如N=3,K=2,那么111和000都是煩悶序列。計算給定N和K在范圍[1,1000]下的煩悶序列數量,最終結果對1007取模。
????這題計算時要轉換一下思路,首先計算非煩悶序列的數量,然后再用2^n減去非緘默系列的數量即可失掉答案。計算非煩悶序列時,需要使用動態規劃,后來子畦跟我說這題時,我的感到就是——丫這動態規劃的轉移式太秒了,我確定想不出來,怎么辦?子畦語重心長地答復:“靠經驗,靠積累吧。”
????我們用f[i][j][0]表現到數列的第i個位置(從0開始)連續j個都是0(從(i-j+1)~i)的情況數,f[i][j][1]則是連續j個1,狀態轉移方程如下:
????f[i][j][0] = f[i-1][j-1][0]
????f[i][j][1] = f[i-1][j-1][1]
????f[i][1][0] = ∑f[i-1][k][1],其中k從1~K
????f[i][1][1] =?∑f[i-1][k][0],其中k從1~K
????*K題:
????給定一個字符集合(全體小寫)如{a,e,f,f,g,i,r,q},然后再給定一些單詞(全體小寫),如:
????abacus
????deltoid
????gaff
????giraffe
????microphone
????reef
????qar
????要求找出一個單詞,其字符全體由字符集合中的字符組成,并且對應的字符出現的次數不超過字符集中該字符出現的次數。如果有多個滿足條件的單詞,那么找最長的,如果長度一樣,則找第一個出現的,這里符號條件的是“giraffe”
????非常水的一道題……但是我們wrong answer了7次……算了,不說了。
????————————題目完————————
????這次競賽,雖然諸多不順,但是總體來說是開了眼界,也發現了自己算法水平的不足,唯有努力追趕以縮小差距,其實競賽還是非常開心的,而且當你看到一些算法那么精妙的時候(不一定是巧妙),不忍嘖嘖稱贊,哈哈,愿各位算法不太好的同學也多多加油。
文章結束給大家分享下程序員的一些笑話語錄: IBM和波音777
波音777是有史以來第一架完全在電腦虛擬現實中設計制造的飛機,所用的設備完全由IBM公司所提供。試飛前,波音公司的總裁非常熱情的邀請IBM的技術主管去參加試飛,可那位主管卻說道:“啊,非常榮幸,可惜那天是我妻子的生日,So..”..
波音公司的總載一聽就生氣了:“膽小鬼,我還沒告訴你試飛的日期呢!”
總結
以上是生活随笔為你收集整理的范围元【2013 GDCPC】有为杯 广东ACM省赛小总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java Socket 学习
- 下一篇: RHEL6.3配置文件共享(5) Sam