“玲瓏杯”鄭州輕工業學院第九屆ACM程序設計大賽圓滿結束


“玲瓏杯”鄭州輕工業學院第九屆ACM程序設計大賽圓滿結束

     ACM/ICPC國際大學生程序設計競賽由美國計算機學會主辦,是目前國際大學生計算機相關領域公認規模最大、水平最高的賽事之一,對參賽學生的學術水平和實踐能力要求很高。為提高學生對ACM/ICPC國際大學生程序設計競賽的認識,培養學生對程序設計的興趣,同時為即將舉辦的河南省第九屆ACM程序設計大賽進行熱身,鄭州輕工業學院計算機與通信工程學院(電子信息工程學院)2017年4月16日在科學校區舉辦“玲瓏杯”鄭州輕工業學院第九屆ACM程序設計大賽暨河南高校邀請賽。該賽事收到省內各高校的高度關注,本次大賽吸引了鄭州大學、河南大學、河南理工大學、河南工業大學等十幾所院校師生參賽代表共計180余支隊伍、500多名學生前來切磋交流。大賽得到了鄭州瓏凌科技有限公司的獨家冠名贊助。

     上午九點,鄭州輕工業學院第九屆“玲瓏杯”ACM程序設計大賽暨河南省高校邀請賽正式開始。比賽為10題5小時賽制,其中,大賽終榜里的前10名有5個隊伍由高中生大佬承包。其中冠軍隊獲得了3000元獎金。一等獎獎金800元,二等獎獎金500元,三等獎獎金300元。另外,比賽其他表現突出的隊伍也分別獲得了:最佳新人獎,最佳女隊將,最快解題獎等獎勵。

     “玲瓏杯”為鄭州瓏凌科技有限公司旗下“玲瓏學院”在線教育項目的子項目,經常贊助河南省內高校比賽。除線下和高校的對接,還專門開發設有線上OJ平台“玲瓏OJ”,每周六舉行“玲瓏杯”線上邀請賽,邀請全國各大高校ACmer進行切磋交流,歡迎對算法感興趣的同學。

玲瓏學院官網:http://www.ifrog.cc/

玲瓏OJ網址:http://www.ifrog.cc/acm

 

 

本次大賽題目網址:https://acm.zzuli.edu.cn/zzuliacm/contest.php?cid=1220

以下是本次大賽題解 

 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------

“玲瓏杯”鄭州輕工業學院第九屆ACM程序設計大賽題解 

Problem A:

     tmk 射氣球 比較簡單的題,直接求空間中一個點到直線的距離而已,這道題說了直線和水平的平面平行,我們可以先求投影到直線的距離,然后再算當前點到直線的距離。

 

Problem B:

base64 解密

將 d2hhdCBpcyB0aGUgcmVtYWluZGVyIHdoZW4gdGhlIG51bWJlciBpcyBkaXZpZGVkIGJ5IDIwMTc/

按 base64 解密可以得到 what is the remainder when the number is divided by 2017?所以答案就是 輸出 x%2017。 

具體解密規則:由於后面沒有’=’,所以直接把每個字符按表轉化為 6 位二進制,把每 8 位 分成一組,按 ASCII 碼轉換為對應字符就可以了。 

 

Problem C:DOBRI  

按題目算出前綴和,對於 i>2,判斷 sum[i]是否等於 sum[i-1]+sum[i-2]+sum[i-3],進行計數, 就可以了。

 

Problem D: hipercijevi

對於每個管道,新建一個點,向管道連接的所有點連一條邊,之后進行一次 bfs,將得到的 結果除 2 就可以了。

 

Problem E: Can Win

轉化為網絡流模型: 

其中 MAX 為第 k 隊的最高得分,即 mark[k]+cnrt[k]。
對於每一個 a[i][j],按左半部分建邊;
對於每一個點 i,向匯點建立一條 MAX-mark[i]的邊。
從 s 向 t 跑最大流,如果從 s 連向 i,j 的邊都滿流,則第 k 個隊可以獲得勝利。 

 

Problem F: Tmk 吃湯飯 模擬,如果有人等待,則一秒一秒模擬,否則,直接跳到下一時刻即可。

 

Problem G: 密室逃脫
可以發現 a^b 與 a 的大小只與 b 的二進制表示中最高位的 1 所在的那一位有關,如果 a 在

這一位是 0,a^b>a,否則 a^b<a,那么就我們只要考慮每一位中有多少個數在這一位是 1 和多少 個數的最高位 1 是這一位,將它們相乘后累加即可,時間復雜度為 O(n*m+m) 

 

Problem H: 維克茲的進制轉換

對於一個數,我們先考慮其最后一位為 0、1、2 中的哪一個。 如果 n&1,那么最后一位只能是 1,所以 f[n] = f[n/2]。 否則,那么最后一位可以是 0 或則 2,所以 f[n]=f[n/2]+f[n/2-1]。 特殊地,f[0] = 1,f[1] = 1,f[2] = 2。 

 

Problem I: 這里是天堂!

先考慮當前情況可行與否

如果當 a>n 或 b>m 時是絕對不可行的,概率為 0

當 a+b<n+m 時,k 一定等於 a+b,否則概率為 0

當 a+b==n+m 時,k>=a+b,否則概率為 0 接下來就是求一個概率,考慮到貓貓來的順序對答案沒有影響,所以可以直接使用古典概型,也即求可行的方案數除以總方案數。

可行的方案數為從 n 里選 a 個的方案乘上從 m 里選 b 個的方案數,總方案為從 n+m 里選 a+b個的方案數。也即 C(n,a)*C(m,b)/C(n+m,a+b)。

由於數據很小,所以可以直接用組合數的遞推公式 C(n,m)=C(n-1,m-1)+C(n-1,m)求出答案,然后分別作為分子分母花間一下就可以了。

 
                       

Problem J: ht 的生日 party 【分析】

先舉一些例子,當有 10 個人,數 3 個人就出隊 我們只要找到小一點的每個數和當前數對應關系是什么就可以了 

例如上圖,假設你下一輪 7 個人最后是第 5 個人存活的,那么 10 個人最后是第 4 個同學存 活的,你如果下一輪 7 個人最后是第 1 個人存活的,那么 10 個人最后是第 10 個同學存活的。

現在就是要找 C 數組和 A 數組的對應關系 從C數組先推到B數組,再從B數組推到A數組

設 A 數組的個數為 n,那么 B 數組和 C 數組就有 n-n/m 個數(/為整除)

    A[i]=B[i]+(B[i]-1)/(m-1)

    C[i]=B[(n-n/m)+1-i]

這樣就很容易得到這 C 和 A 的關系,設 f[n]表示 n 個人玩游戲,幸存者為第 f[n]個人,所以得到遞推式 

復雜度就是 O(n)的 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM