A
每一輪對總分的貢獻都是 \(2\),如果 \(p_1 + p_2 + p_3\) 為奇數則無解。
- \(p_1 + p_2 \le p_3\),最多 \(p_1 + p_2\) 輪。
- \(p_1 + p_2 > p_3\),可以 \(1, 2\) 輪流將 \(3\) 耗完,然後互相匹配,最多 \(\dfrac{p_1 + p_2 + p_3}{2}\) 。
B
-
如何判斷一個 \(k_0\) 是否符合條件?
處理每一位的字首和,依次檢查每個長度為 \(k_0\) 的子串,\(O(N\log N)\)。
-
如果 \(k_0\) 符合條件,則 \(k_1 = k_0 + 1\) 是否符合條件?
令 \(s_i = a_i \mid a_{i + 1} \mid \cdots\mid a_{i + k_0 - 1}\)。
則 \(s_i' = s_i = a_i \mid a_{i + 1} \mid \cdots\mid a_{i + k_1} = s_i \mid s_{i + 1}\)。
由於 \(\forall i, j, \ s_i = s_j\),所以 \(\forall i, j, \ s_i' = s_j'\)。
答案具有單調性,考慮二分,複雜度 \(O(N\log^2N)\)。
C
長度為 \(n\) 的序列最多 \(n / 2 - 1\) 個區域性最大值。
是否能達到這個上界?
欽定 \(n / 2\) 個位置為區域性最大值,給這些位置按數值從大到小分配 \(n/2 + 1\cdots n\) ,給其他位置按數值從大到小分配 \(1\cdots n / 2\)。
欽定位置的最小值可能為 \(n + 1\),其他位置的最大值也可能為 \(n + 1\),不好判斷。
如果欽定位置一定包含數值 \(n\) 呢?
欽定位置至少為 \(n + 1\),其他位置最大隻有 \(n\)。
因此,只要在選定 \(n/2\) 個位置後,按上述策略分配即可。
由於區域性最大值兩兩不相鄰,不妨按照 \(n\) 所在位置的奇偶欽定全部奇數位或全部偶數位。
D
- 答案 \(m\) 一定是最大值 \(mx\) 的倍數。
- 最短子段長度不大於 \(n / k\)。
- \(m\) 一定不大於 \(mx\) 的 \(n / k\) 倍。
於是先花 \(n\) 次操作找到最大值 \(mx\)。
再列舉 \(m\) 是 \(mx\) 的幾倍,每輪不超過 \(k\) 次,總共不超過 \(n\) 次。