--- tags: Editorial --- # 108 北一區資訊學科能力競賽 + 題解 > 比賽時間:2019/11/13(三) > 參賽人數:29 位 > 晉級人數:2 位 > 評分標準:CMS,同分以執行時間比較 [TOC] ## 上午場 09:00 ~ 12:00 ### pA. 電話民調計票 **題目敘述** $N$ 位候選人,$P$ 位投票者,每位民眾最多可以投給 $M$ 個人 有效的投票是一個長度為 $N$ 的字串,其中只包含最多 $M$ 個 `*`,其餘皆為 `0`。 請計算每位候選人的得票數並排序。 **數據範圍** - $N, M \le 100$ - $P \le 5\,000$ | 子題 | 分數 | 限制 | |:----:|:--------------------:|:----------------:| | $1$ | $5\ 組 \times 1\ 分$ | 投票必定合理 | | $2$ | $5\ 組 \times 2\ 分$ | 投票長度必定合理 | | $3$ | $5\ 組 \times 2\ 分$ | 無額外限制 | :::spoiler 題解 by SorahISA $\qquad$ 對每次投票,只要長度不同或是 $\texttt{'*'}$ 超過 $M$ 個就直接 break,就剩下 sort 了~只要自己寫一個 cmp 就好。 $\qquad$ [Code by SorahISA](https://pastebin.com/w3kMb8SS) ::: <!-- <details> <summary>題解 by SorahISA</summary> <ol> 對每次投票,只要長度不同或是 '*' 超過 M 個就直接 break<br/> 就剩下 sort 了~<br/> 自己寫一個 cmp 就好<br/> <a href="https://pastebin.com/w3kMb8SS">Code by SorahISA</a> </ol> </details> --> ### pB. 採草莓問題 **題目敘述** 輸入同 $\text{IOI 1994 D1T1. The Triangle}$ <a href = "http://olympiads.win.tue.nl/ioi/ioi94/contest/day1prb1/problem.html"> Link </a> 不過要走到從左上角走到右下角並輸出路徑,向東優先,一開始在左上角格子的左邊,最後走到右下角格子的右邊。 **數據範圍** - $N \le 100$ | 子題 | 分數 | 限制 | |:----:|:--------------------:|:----------------------------------:| | $1$ | $3\ 組 \times 1\ 分$ | $N \le 10$,且不存在兩條相同的路徑 | | $2$ | $4\ 組 \times 3\ 分$ | $10 < N \le 50$ | | $3$ | $2\ 組 \times 5\ 分$ | $50 < N \le 100$ | :::spoiler 題解 by SorahISA $\qquad$ 基本的 dp~ $\qquad$ 走到 $\texttt{map[i][j]}$ 的最大收益是 $\texttt{map[i-1][j]}$ 跟 $\texttt{map[i][j-1]}$ 的最大值加上 $\texttt{strawberry[i][j]}$,不過要列出路徑,所以就把所有地方的轉移來源都記下來。 $\qquad$ 如果遇到同時可以走兩個方向,就紀錄是從「上面」轉過來的,因為在回朔路徑走法時,一定會有頭尾的 $\texttt{E}$、$(N-1)$ 次向 $\texttt{E}$、$(N-1)$ 次向 $\texttt{S}$,所以後面多走一點向南的路,就代表前面可以走較多向東的路。 $\qquad$ [Code by SorahISA](https://pastebin.com/QmC1RgpY) ::: <!-- <details> <summary>題解 by SorahISA</summary> <ol> 基本的 dp~<br/> 走到 map[i][j] 的最大收益是 map[i-1][j] 跟 map[i][j-1] 的最大值加上 strawberry[i][j]<br/> 不過要列出路徑,所以就把所有地方的轉移都記下來<br/> 如果遇到同時可以走兩個方向,就紀錄是從「上面」轉過來的,因為在回朔路徑走法時,一定會有頭尾的 E、N-1 次向東、N-1 次向南<br/> 所以後面多走一點向南的路,就代表前面可以走較多向東的路。<br/> <a href="https://pastebin.com/QmC1RgpY">Code by SorahISA</a> </ol> </details> --> ### pC. 解碼問題 **題目敘述** 將密鑰的空白以及重複字元刪除,再將 `a~z` 中剩餘字元依序接在後面,接下來按照字母表將其加密。 輸入第一行是 $0$ 或 $1$,代表解密或加密。 第二行是密鑰,由小寫組成,可能有空格。 第三行是明文或密文,可帶有大小寫及空格,大小寫及空白按照原樣輸出。 **數據範圍** - $|S| \le 2\,000$ | 子題 | 分數 | 限制 | |:----:|:--------------------:|:----------:| | $1$ | $5\ 組 \times 5\ 分$ | 無額外限制 | :::spoiler 題解 by SorahISA $\qquad$ 用 set 去紀錄每個字元有沒有被選過,以此構建出字母對應表,剩下就是暴力ㄌ~如果遇到空白就直接輸出,遇到大寫就先轉小寫,加密 / 解密後再變回來。 $\qquad$ [Code by SorahISA](https://pastebin.com/AbegtQh1) ::: <!-- <details> <summary>題解 by SorahISA</summary> <ol> 用 set 去紀錄每個字元有沒有被選過,以此構建出字母對應表<br/> 剩下就是暴力ㄌ~如果遇到空白就直接輸出,遇到大寫就先轉小寫,加密 / 解密後再變回來。<br/> <a href="https://pastebin.com/AbegtQh1">Code by SorahISA</a> </ol> </details> --> ### pD. 戳戳樂問題 **題目敘述** 在 $N \times M$ 的棋盤上確認一組多皇后的解是否有問題。 對於所有有問題的點座標按照由左到右,由上到下輸出。 **數據範圍** - $N, M \le 500$ | 子題 | 分數 | 限制 | |:----:|:---------------------:|:-------------:| | $1$ | $1\ 組 \times 1\ 分$ | $N,M \le 5$ | | $2$ | $1\ 組 \times 2\ 分$ | $N,M \le 10$ | | $3$ | $1\ 組 \times 4\ 分$ | $N,M \le 20$ | | $4$ | $1\ 組 \times 8\ 分$ | $N,M \le 100$ | | $5$ | $1\ 組 \times 10\ 分$ | $N,M \le 500$ | :::spoiler 題解 by SorahISA $\qquad$ 如果暴力可以作到 $O(NM(N+M))$ 好像也可以過? $\qquad$ 不過教授說要壓執行時間,所以可以改成紀錄每個直行、橫列、$2 \times (N+M-1)$ 條對角線有幾個洞再判斷,這樣就是 $O(NM)$ 了耶! $\qquad$ [Code by SorahISA](https://pastebin.com/uZweTxEY) ::: <!-- <details> <summary>題解 by SorahISA</summary> <ol> 如果暴力可以作到 O(NM(N+M)) 好像也可以過?<br/> 不過教授說要壓執行時間,所以可以改成紀錄每個直行、橫列、2*(N+M-1) 條對角線有幾個洞再判斷,這樣就是 O(NM) 了耶!<br/> <a href="https://pastebin.com/uZweTxEY">Code by SorahISA</a> </ol> </details> --> ## 下午場 13:00 ~ 15:00 ### pE. 哆啦A夢的生日 **題目敘述** 已知 $2112/01/01$ 是星期五 $Q$ 次詢問 $2102/01/01$ 到 $2122/01/01$ 年之間的某一天是星期幾 輸入長這樣: ``` 2 2112/01/01 2112/02/29 ``` 輸出長這樣: ``` Friday Monday ``` **數據範圍** - $\text{TL: 2 seconds}$ - $Q \le 3\,000$ | 子題 | 分數 | 限制 | |:----:|:---------------------:|:--------------:| | $1$ | $1\ 組 \times 1\ 分$ | $Q \le 5$ | | $2$ | $1\ 組 \times 2\ 分$ | $Q \le 10$ | | $3$ | $1\ 組 \times 4\ 分$ | $Q \le 20$ | | $4$ | $1\ 組 \times 8\ 分$ | $Q \le 2\,000$ | | $5$ | $1\ 組 \times 10\ 分$ | $Q \le 3\,000$ | :::spoiler 題解 by SorahISA $\qquad$ 雖然這題直接暴力是 $\mathcal{O}(3000 \times 10 \times 365)$,大約是 $10^7$ 也可以過,不過既然要看時間,那就有必要得到 $\mathcal{O}(1)$ 的做法。 $\qquad$ 我的作法是直接手動建表,建每年的元旦是星期幾,之後再判斷有沒有閏年。 $\qquad$ [Code by SorahISA](https://pastebin.com/TiHQ4dyj) ::: <!-- <details> <summary>題解 by SorahISA</summary> <ol> 雖然這題直接暴力是 O(3000*10*365),大約是 10^7 也可以過<br/> 不過既然要看時間,那就有必要得到 O(1) 的做法<br/> 我的作法是直接手動建表,建每年的元旦是星期幾<br/> 之後再判斷有沒有閏年<br/> <a href="https://pastebin.com/TiHQ4dyj">Code by SorahISA</a> </ol> </details> --> ### pF. 塗色問題 **題目敘述** 敘述簡略請見諒 給 $N$,然後有 $N$ 層的 block,第 $i$ 層 $i$ 個,然後給每個 block 上色,不能重複(顏色編號 $1 \sim \frac{N(N+1)}{2}$)。 接下來給 $M$ 組衝突的顏色,衝突的顏色不能放在相鄰的格子,問你第一層的格子放什麼顏色會使方案數最少,還有此時的方案數。 如果有多個顏色,輸出編號最小的。 **數據範圍** - $\text{TL: 8 seconds}$ - $N \le 5$ - $0 \le M \le \frac{N(N+1)}{2}$ | 子題 | 分數 | 限制 | |:----:|:--------------------:|:---------------:| | $1$ | $1\ 組 \times 2\ 分$ | $N \le 2$ | | $2$ | $5\ 組 \times 3\ 分$ | $3 \le N \le 4$ | | $3$ | $2\ 組 \times 4\ 分$ | $N = 5$ | :::spoiler 題解 by SorahISA $\qquad$ 爆搜+剪枝 $\mathcal{O}\left(\left(\frac{N(N+1)}{2}-1\right)!\right)$ 可以過! $\qquad$ 用 `next_permutation` 則會 TLE 拿到 $17$ 分 $\qquad$ 我的寫法可以被特定測資卡掉,應該有更好的解法?歡迎提供想法~ $\qquad$ [Code by SorahISA](https://pastebin.com/RuHeJbe2) ::: <!-- <details> <summary>題解 by SorahISA</summary> <ol> 爆搜+剪枝O((N*(N+1)/2 - 1)!)可以過!<br/> 用next_permutation會TLE拿到17分<br/> 應該有更好的作法?歡迎提供想法<br/> <a href="https://pastebin.com/RuHeJbe2">Code by SorahISA</a> </ol> </details> --> ## Rankings | 學校<br>姓名 | pA | pB | pC | pD | 上午場 | pE | pF | 下午場 | 總分 | |:------------------:|:----:|:----:|:----:|:----:|:------:|:----:|:----:|:------:|:-----:| | 花蓮高中<br>范釗維 | $25$ | $25$ | $25$ | $25$ | $100$ | $25$ | $25$ | $50$ | $150$ | | 宜蘭高中<br>黃允謙 | $25$ | $25$ | $25$ | $25$ | $100$ | $25$ | $23$ | $48$ | $148$ | | 花蓮高中<br>吳庭安 | $25$ | $25$ | $25$ | $25$ | $100$ | $25$ | $17$ | $42$ | $142$ | | 花蓮高中<br>林奕廷 | $25$ | $25$ | $25$ | $25$ | $100$ | $25$ | $2$ | $27$ | $127$ | | 台東高中<br>王景誠 | $?$ | $?$ | $?$ | $?$ | $?$ | $?$ | $?$ | $?$ | $?$ | | 慧燈高中<br>林劭軒 | $?$ | $?$ | $?$ | $?$ | $?$ | $?$ | $?$ | $?$ | $?$ | | 佳作 | $-$ | $-$ | $-$ | $-$ | $-$ | $-$ | $-$ | $-$ | $-$ | | 宜蘭高中<br>朱偉哲 | $25$ | $25$ | $25$ | $15$ | $90$ | $25$ | $2$ | $27$ | $117$ |
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.