高中的時候我就知道 CPE 這個考試了,但是因為題目都是用英文出題的一直不敢去考,一拖就拖到大二了。因為我朋友剛好約我一起去考,所以我就答應了,順便去玩玩看,反正大學生考試不用錢,想考幾次就考幾次。
我考的是 2024/12/10 號這場,在南臺科大考試。
考前準備
這次算是裸考,我只有把一星題刷了一些,其它也沒特別做什麼準備,但我不算是完全沒有基礎,算是有練過一點點演算法跟資料結構,所以不能算是完全的新手。
除此之外我還有準備了一下瘋狂程設這個環境,UI/UX 就超級糟,大該就跟用記事本寫差不多而以,如果很依靠 autocomplete 的人應該會很痛苦,我覺得 APCS 的 Code::Blocks 還比較好用,但這個軟體有一個優點,就是會有一部分的測資讓你去測試,我自己看下來除了 TLE 測不出來之外,其它的 BUG 都能很好的抓出來。
題目檢討
第一題
題意大該是給你幾個語言,然後題述裡面會有國家對應的語言,之後輸出語言對應的國家,注意一下如果輸入的語言不在題目裡的話要輸出 UNKNOW。
簽到題不多說
第二題
題目在這裡,這題也是水題,需要注意一下輸出的格式就行了。
第三題
題述給定一個函數,我記得是 $a_0nx^{n-1} + a_1(n-1)x^{n-2} + \cdots + a_{n-1}$,之後會再給 $a_0 \sim a_{n-1}$ 跟 $x$,輸出結果即可。
這題應該是水題,但我在算次方的時候用了 pow 內建的函式,這是一個超超超大的坑,範測是對的但是到公開測資就錯了,而且都是差一點點這樣,一直以為是次方算到負才會發生這種問題,我卡了很久才發現到 pow 是的浮點數精度爛掉,我先前一直認為加上 int 做強制轉型就行了,但明顯我錯了,因為浮點數我卡了半個小時在 DEBUG。
這題會用到 getline 來處理整行都是數字的情況,有點小實作。
第四題
題意是給你數個個序列,並且這幾個序列是會循環,然後所有的序列都是從 $0$ 開始,每一天都會往後一格,並且每天最小的值那行會被移除,如果有超過兩個序列符合最小值則當天不進行移除,需要回答在剩下幾個序列沒有被移除,並且最後一個序列被移除是在哪一天,如果沒有序列被移除則回傳 $0$。
這題的難點是要怎麼樣處理發散的情況,因為有可能會遇到兩個完全相同的序列,那麼這兩個在迴圈內永遠不會結束。正確的解法應該是用最小公倍數,這是我朋友的解法但我沒有想到。我用的方法算是唬爛解,就是如果連續跳過超過 $10^4$ 次就直接 break,至於為什麼是 $10^4$ 是因為我吃了兩個罰時,從 $10^6$ 往下測測出來的。
第五題
給定數個字串,並且會再給你很多個字串 pair,問你從第一個 pair 的字串要經過哪幾個才能到第二個 pair 的字串,需要注意要走最小字典序的路徑。
我這題理解完全錯誤,我以為的意思一個 pair 的字元可以正換,輸出符合互換的字串,跟題意差超多。
解法根據布丁的說法是把一開始給的數個字串轉成圖再去跑 BFS 或 dijkstra,但題意一開始就爛了,所以也沒解出來。
第六題
這題是我最可惜的一題,因為被那個 pow 卡太久,不然應該解的出來的,題目我在考完就馬上查到了,我的遞迴還沒寫完就沒了。
布丁說這題可以枚舉,滿有趣的,但其實枚舉寫出來 DP 也就差不多啦。
第七題
還沒沒開到
結論
第一次的 CPE 比我預期的好,我本來目標是三題而以,但解到四題,但是也有點可惜,第六題應該能解出來的,真的有點可惜了,之後練熟應該會再來挑戰。
然後小抱怨一下南臺的鍵盤很爛,打起來超級不舒服。