# 2024/1/7 TOI海選 **報名動機** -- 其實我有報APCS在同一天,只是APCS的考場在南大(沒搶到成大的),而且我覺得我目前的實力還不到可以考APCS (菜鳥) ,所以就來考TOI海選 **UPD : 結果4月24號報名6月的APCS因為我缺考所以不能報名 然後成大考場瞬間被搶光:(** **考試心得** -- **這次考的分數是 ==300/300== , 所以是順利進入初賽 :smile:** 其實當天我沒帶筆過去,太緊張了,最後還是跟旁邊的同學借的(謝謝謝謝謝) 一開始在調設備的時候連code blocks怎麼重新命名檔案都不會 差點出事... 最後也是問隔壁的同學~~好丟臉~~ 我覺得整體pB、pC的難度都很高,不過考coding就是在不斷突破自己,而且又不像APCS難度那麼高,覺得這次的TOI海選是報對了! ~~很多人破台害我很緊張~~ > 附上一個人權證明  **題目(總共三題)** -- **程式碼的部分我沒存所以就不放全部了** :sweat_smile: * **pA** : **題目** : :::success 給定$ABCDEF$相對應之二進制 將會以==1 0 0 1==形式輸入 所以是4個char的格式 有k代表多組測資 接著是判斷並輸出對應的字母 ::: **解題思路** : :::info if else if else if else 暴力XD ::: **部分程式碼(還記得的部分XD)** : ```cpp string a = "0000"; //用字串解 for(char &c : a) { cin >> c; // '1' '0' '1' '1' -> "1001" } ``` **解題心得** : :::warning 簡單的一百分入手! 當初一開始拿到題目的時候我是打算用`switch`去解 但是發現`switch`只能解char 跟 數字 就直接if else解了 ~~第一次考很緊張~~ ::: * **pB** : **題目** : :::success ==**全奇數 : 全部位數為奇數**== 給定一個數字($n<={10}^{18}$) a = |比n大的最小全奇數 - n| b = |比n小的最大全奇數 - n| 輸出max(a,b) ::: **解題思路** : :::info 題目看起來很簡單 ~~但它原題目字數很多~~ 分析全奇數的規則 會發現求a只要把n的第一個偶數(從最大位數往下找)+1 然後將剩下來的位數全改成1 b會變成-1 只是要注意的是 b的偶數位假如==0的話前方數字也要做修改 ::: **解題心得** : :::warning 一開始看到字數就被嚇到了 然後還以為是要把全部偶數+1 AND -1 所以範例測資錯了就跳去寫pC了 到後面剩下pB才慢慢地寫掉 我覺得這題最難的的地方就是在於b的那個==0的特殊情況 不然其它的部分都還好 ::: **2024 6月UPD : 解了好多題回來看,這題好像是轉五進制就可以知道全奇數了** * **pC** : **題目** : :::success 給一個 $k$ 值 再輸入 $s$ 字串 求 $s$ 字串中連續 $k$ 次重複(小寫、大寫 需要穿插)的子字串最大長度 Example : ==BaBaB==B 前面的==BaBaB==符合要求 所以ans = 5 ::: **解題思路** : :::info 一開始先設定第一個字元的狀態`islower(s[i])` 然後這邊我有犯一個錯誤 我還以為`islower()`會回傳bool值 :cry: 所以卡很久 然後再用算經過多少符合規則的字元 假如遇到不符合規則的直接`break` 對 我太緊張了 沒想到最優解 然後開一個for(n次)的迴圈帶入上述的判斷規則函數 取最大值 最後就是O(n^2)的解QQ ::: **解題心得** : :::warning ~~TOI海選範例好弱~~ 本來寫出O(N^2)的解就覺得要修一下了 結果放上去就 ==AC==了 (;´д`)ゞ :::
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up