# APCS 20200105 非官方題目整理 ### pA 猜拳 有一個機器人跟真人玩 $N$ 次猜拳, 真人在第$i$輪出的拳為 $y_i$, 機器人第一次會出的拳為 $F$,接下來出拳的方式如下: 如果前兩輪真人出的拳皆相同,則電腦這輪會出可以打敗前兩輪的拳; 否則,電腦會出與前一輪真人一樣的拳。 請輸出第 $k$ 輪時會分出勝負,或 $N$ 輪雙方都平手。 #### 輸入格式: $F$ $N$ $y_1\ y_2\ ...\ y_N$ #### 輸出格式: $c_1\ c_2\ ... \ c_k\ :$ ```Drew at round N```/```Won at round k```/```Lost at round k``` #### 範圍: $F, y_i, c_i \in \{0, 2, 5\}$ (```0```指石頭,```2```指剪刀,```5```指布) $N \leq 10$ #### 範例測資: Input 1: ``` 0 4 2 5 0 2 ``` Output 1: ``` 0 : Won at round 1 ``` Input 2: ``` 2 2 2 0 ``` Output 2: ``` 2 2 : Lost at round 2 ``` Input 3: ``` 5 4 5 5 0 0 ``` Output 3: ``` 5 5 2 : Lost at round 3 ``` Input 4: ``` 5 6 5 5 2 2 0 0 ``` Output 4: ``` 5 5 2 2 0 0 : Drew at round 6 ``` #### 子題: |子任務編號|分數|限制| |:---:|:----:|:----------:| | $1$ | $20$ |$N = 1$| | $2$ | $20$ |$N = 2,~y_1 \ne y_2$| | $3$ | $60$ |無額外限制| --- ### pB 矩陣 有一個高 $s$ 寬 $t$ 的小矩陣 $A$,和一個高 $n$ 寬 $m$ 的大矩陣 $B$, 第一行輸出大矩陣中有 $cnt$ 個高 $s$ 寬 $t$ 的子矩陣其「距離」與小矩陣不超過 $r$, 第二行輸出「距離」與小矩陣不超過 $r$ 的所有子矩陣中,元素總和差與小矩陣最小的值 $min$, 若找不到「距離」與小矩陣不超過 $r$ 的子矩陣,$min$ 請輸出```-1```。 距離的定義為兩矩陣中對應位置相同但值不相同的元素數量。 #### 輸入格式: $s\ t\ n\ m\ r$ $A_{11}\ A_{12}\ ... \ A_{1t}$ $A_{21}\ A_{22}\ ... \ A_{2t}$ $\vdots$ $A_{s1}\ A_{s2}\ ... \ A_{st}$ $A_{11}\ A_{12}\ ... \ A_{1t}$ $A_{21}\ A_{22}\ ... \ A_{2t}$ $\vdots$ $A_{s1}\ A_{s2}\ ... \ A_{st}$ $B_{11}\ B_{12}\ ... \ B_{1m}$ $B_{21}\ B_{22}\ ... \ B_{2m}$ $\vdots$ $B_{n1}\ B_{s2}\ ... \ B_{nm}$ #### 輸出格式: $cnt$ $min$ #### 範圍: $1 \leq s, n \leq 10$ $1 \leq t, m \leq 100$ $1 \leq r \leq 100$ $0 \leq A_{ij}, B_{ij} \leq 9$ #### 範例測資: Input 1: ``` 1 3 1 10 1 7 4 7 6 7 7 7 4 5 0 4 4 7 ``` Output 1: ``` 3 2 ``` Input 2: ``` 3 3 5 5 2 1 2 1 2 4 2 2 4 5 1 2 1 2 3 2 4 2 4 2 2 4 2 3 5 3 2 4 2 0 3 2 4 5 5 ``` Output 2: ``` 3 1 ``` #### 子題: |子任務編號|分數|限制| |:---:|:----:|:----------:| | $1$ | $50$ |$s = m = 1$| | $2$ | $50$ |無額外限制| --- ### pC 砍樹 有 $n$ 棵樹在一條長度為 $l$ 的林場上(林場為一條數線), 第 $i$ 棵樹的位置為 $c_i$,高度為 $h_i$, 一棵樹可以被砍倒若 $(c_i - h_i, c_i)$ (不含端點)這段區間都沒有還沒被砍倒的樹且 $h_i - c_i \geq 0$, 或$(c_i, c_i + h_i)$ (不含端點)這段區間都沒有還沒被砍倒的樹且 $h_i + c_i \leq l$, 輸出最多可以砍倒 $cnt$ 棵樹,以及被砍倒的樹中最高的一棵高度為 $max$。 若沒有樹可以被砍倒,$max$ 請輸出```0```。 #### 輸入格式: $n\ l$ $c_1\ c_2\ ...\ c_n$ $h_1\ h_2\ ...\ h_n$ #### 輸出格式: $cnt$ $max$ #### 範圍: $1 \leq n \leq 10^5$ $1 \leq l < 10^9$ $0 \leq c_i \leq l$ $1 \leq h_i \leq 10^9$ #### 範例測資: Input 1: ``` 6 140 10 30 50 70 100 125 30 15 55 10 55 25 ``` Output 1: ``` 4 30 ``` Input 2: ``` 1 10 5 6 ``` Output 2: ``` 0 0 ``` #### 子題: |子任務編號|分數|限制| |:---:|:----:|:----------:| | $1$ | $20$ |$N \le 10$| | $2$ | $40$ |$N \le 1000$| | $3$ | $40$ |無額外限制| --- ### pD 貨物分配 有一顆 $2n - 1$ 節點的的二元樹,其中節點編號 $n$ 到 $2n - 1$ 是葉節點,為一個內容物重量為 $p_i$ 的紙箱, 節點編號 $1$ 到 $n-1$ 為轉接器,其中編號 $1$ 的轉接器是貨物的入口(根節點), 接下來有 $m$ 個貨物,每個貨物有自己的重量 $w_i$ , 每個貨物會從根節點開始,往左右兩個轉換器/紙箱中權重較小的一邊移動,若權重相同,則會往左邊的轉換器/紙箱, 當第 $i$ 個貨物到達紙箱後,該紙箱的重量就會加上 $w_i$, 請輸出每個貨物到達的紙箱編號 $b_i$,以一個空白隔開。 一個轉換器/紙箱的權重為其子孫節點中所有紙箱的重量總和。 #### 輸入格式 $n\ m$ $p_n\ p_{n+1}\ ...\ p_{2n-1}$ $w_1\ w_2\ ...\ w_m$ $p_1\ s_1\ t_1$ $p_2\ s_2\ t_2$ $\vdots$ $p_{n-1}\ s_{n-1}\ t_{n-1}$ 其中,$p_i\ s_i\ t_i$ 的意義為轉換器 $p_i$ 其左子節點編號為 $s_i$,右子節點編號為 $t_i$。 #### 輸出格式 $b_1\ b_2\ ...\ b_m$ #### 範圍 $1 \leq n \leq 10^5$ $1 \leq m \leq 100$ $(\Sigma_{i=n}^{2n-1} p_i) + (\Sigma_{j=1}^{n-1} w_i) \leq 10^9$ #### 範例測資 Input 1: ``` 4 5 0 0 0 0 5 4 3 2 1 1 2 3 2 4 5 3 6 7 ``` Output 1: ``` 4 6 7 5 5 ``` Input 2: ``` 7 2 9 2 1 6 8 7 5 2 3 1 2 5 2 3 7 3 13 10 4 11 9 6 12 8 5 6 4 ``` Output 2: ``` 8 7 ``` #### 子題: |子任務編號|分數|限制| |:---:|:----:|:----------:| | $1$ | $20$ |$n \le 10,~s=2p,~t=2p+1$| | $2$ | $30$ |$n \le 1000,~s=2p,~t=2p+1$| | $3$ | $50$ |無額外限制| ###### tags: `APCS` `APCS 20200105`