# TOI 2021 入營考 題目整理
## A. 原始人排序
給 $N$ 個數字 $a_1 \sim a_N$,把所有數字按照二進制 $1$ 的個數排序,如果相同就按照出現順序排序。
- $N \le 1000$
- $0 \le a_i < 2^{10}$
- $[40]$ $N \le 7$
- $[60]$ 無額外限制
```
[Input Format]
N
a_1 a_2 ... a_N
[Output Format]
ans_1 ans_2 ... ans_N
```
## B. 掃地機器人
ref: [TIOJ 1399](https://tioj.ck.tp.edu.tw/problems/1399)
有 $N$ 間房間,在第 $i$ 間房間總共待了 $t$ 秒可以獲得 $\displaystyle \sum_{x=0}^{t-1}{\max(0, a_i - b_i x)}$ 的分數。
一開始你在房間 $1$,在房間 $i$ 跟 $(i+1)$ 之間移動需要花費 $c_i$ 秒,同一間房間可以重複獲得分數,求經過 $T$ 秒之後的分數最大值。
- $N \le 1000$
- $T \le 10^9$
- $0 \le a_i, b_i, c_i \le 10^9$
- $[30]$ $T \le 1000$
- $[70]$ 無額外限制
```
[Input Format]
N T
c_1 c_2 ... c_{N-1}
a_1 a_2 ... a_N
b_1 b_2 ... b_N
[Output Format]
ans
```
## C. 粉刷護欄
給你長度為 $N$ 的序列 $\langle a \rangle, \langle b \rangle$,其中 $a_i$ 互不相同,$b_i$ 也互不相同,且 $a$ 跟 $b$ 在經過排序後會相同。
現在有 $N$ 根棍子,編號為 $i$ 的棍子會連著上下編號為 $i$ 的數字。請你求出一個大小最大的序列 $\mathcal{S} = \{p_1, p_2, \dots, p_{|\mathcal{S}|}\}$ 使在 $\langle a \rangle$ 和 $\langle b \rangle$ 中數字為 $p_i$ 的位置嚴格遞增。
也就是說,如果讓 $a'_i$ 跟 $b'_i$ 表示數字 $i$ 在 $\langle a \rangle, \langle b \rangle$ 的位置,那你選出的序列 $\mathcal{S}$ 需要滿足所有 $p_i$ 都有在 $\langle a \rangle$ 和 $\langle b \rangle$ 出現過,且須符合 $a'_{p_1} < a'_{p_2} < \dots < a'_{p_{|\mathcal{S}|}}$ 跟 $b'_{p_1} < b'_{p_2} < \dots < b'_{p_{|\mathcal{S}|}}$。
如果有多組解請輸出使 $\mathcal{S}$ 字典序最大的一組。
- $N \le 2 \times 10^5$
- $0 \le a_i, b_i \le 10^9$
- $[22]$ $N \le 10$
- $[33]$ $N \le 100$
- $[45]$ 無額外限制
```
[Input Format]
N
a_1 a_2 ... a_N
b_1 b_2 ... b_N
[Output Format]
p_1 p_2 ... p_{|S|}
```
```
[Sample Input 1]
10
1 3 9 5 4 6 8 2 18 10
3 1 4 5 9 2 10 6 8 18
[Sample Output 1]
5
3 9 6 8 18
```
## D. 乘車時間
有一棵樹狀的鐵路圖,點數為 $N$。每條邊 $(u,v)$ 會雙向發車,題目會給你 $u \rightarrow v$ 及 $v \rightarrow u$ 第一班車的時間為 $0$ 點 $a_i$ 及 $0$ 點 $b_i$ 分和班距 $p_i$ 跟開到另一個端點的時間 $w_i$,且 $a_i, b_i < p_i$。兩邊的第一班車發車時間不一定相同,不過班距跟行駛時間都會相同。
另外,若你在時間 $t$ 到達車站,你只能搭時間在 $(t+1)$ 之後的車(轉車需要花 $1$ 單位時間)。
接著有 $Q$ 筆詢問,求在時間 $h_i$ 時 $m_i$ 分從 $x_i$ 出發最快多久可以到達 $y_i$。
- $N \le 5 \times 10^4$
- $Q \le 2 \times 10^5$
- $1 \le u_i, v_i, x_i, y_i \le N$,$u_i \ne v_i$,$x_i \ne y_i$
- $0 \le a_i, b_i < p_i \le 6$
- $1 \le w_i \le 1000$
- $0 \le h_i \le 23$,$0 \le m_i \le 59$
- $[16]$ $N \le 500$
- $[31]$ $p_i = 1$
- $[37]$ $u_i = i,\ v_i = i+1$(樹的形狀為一條鏈)
- $[16]$ 無額外限制
```
[Input Format]
N Q
u_1 v_1 w_1 a_1 b_1 p_1
u_2 v_2 w_2 a_2 b_2 p_2
...
u_{N-1} v_{N-1} w_{N-1} a_{N-1} b_{N-1} p_{N-1}
h_1 m_1 x_1 y_1
h_2 m_2 x_2 y_2
...
h_Q m_Q x_Q y_Q
[Output Format]
ans_1
ans_2
...
ans_Q
```
## E. 密室逃脫
ref: [UVa 11383](https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=25&page=show_problem&problem=2378)
給 $N \times N$ 的方格,$(i, j)$ 上面的數字是 $a_{i,j}$,每次可以選一個 row 或 column 全部減一,求能把所有數字變成 $\le 0$ 的最少操作次數,並給出任意一組解。
- $N \le 500$
- $0 \le a_{i,j} \le 2 \times 10^6$
- $[20]$ $N \le 20,\ a_{i,j} = \{0, 1\}$
- $[40]$ $N \le 70,\ a_{i,j} = \{0, 1\}$
- $[35]$ $N \le 70$
- $[5]$ 無額外限制
- 輸出格式正確並且輸出正確的最少操作數可以得到該子題 $40\%$ 的分數
```
[Input Format]
N
a_{1,1} a_{1,1} ... a_{1,N}
a_{1,1} a_{2,1} ... a_{2,N}
...
a_{N,1} a_{N,1} ... a_{N,N}
[Output Format]
ans
r_1 r_2 ... r_N
c_1 c_2 ... c_N
```
## Scoreboard
:::spoiler Scoreboard
https://cms.tfcis.org/dumprank/rank/toi2021/
![scoreboard.csie.ntnu.edu.tw_Ranking.html.png](https://i.loli.net/2021/03/07/QFkdRUJ5ZAuOelS.png)
:::
## 解說
:::spoiler Editorial
by 學長: https://www.nekoio.net/toi-primary-2021/
(如果題解有部分被卡掉請調整視窗寬度)
:::