AtCoder Regular Contest 185

Lu_xZ發表於2024-10-14

保齡選手來寫下記錄。

A

由於 \(N < M\),所有 \(i\) 在模 \(M\) 意義下互不相同。

這說明如果一個人至少有兩張牌,當前回合一定不會輸。

\(b\) 為 Bob 的最後一張牌。

Alice 打出最後一張牌後局面達到 \(N(N + 1) - b\)。當且僅當 \(b \equiv N(N + 1) \pmod M\),Bob 勝。

\(c = N(N + 1) \bmod M\)

  1. \(c \in [1, N]\)

    如果 Bob 一直將 \(c\) 保留到最後,他就贏了。

    • Bob 手中牌數 \(\ge 3\)

      可以用除 \(c\) 外的另外兩張來保證自己不會輸。

    • Bob 手中牌數等於 \(2\)

      設 Alice 打出最後一張牌為 \(a\)

      則 Bob 倒數第二輪不打 \(c\) 能達到的局面為 \(N(N + 1) - a - c \equiv -a\not\equiv 0\),不會輸。

  2. \(c \notin [1, N]\),無論如何 Bob 都不會贏。

submission

B

定義一個非降序列是「好的」當且僅當序列極差不大於 \(1\)

結論:答案合法當且僅當他能操作為一個好的序列。

充分性:好序列也是非降的。

必要性:任意非降序列都能操作為一個好序列:

  • 每次找到靠的最近 \(i < j\) 滿足 \(A_j - A_i \ge 2\),一定有 \(A_i < A_{i + 1}\),否則 \(i + 1\) 更靠近 \(j\),同理 \(A_{j - 1} < A_j\)
  • 操作後仍然滿足 \(A_{i}^{\prime} \le A_{i + 1} \le \cdots \le A_{j - 1} \le A_j^{\prime}\)
  • 不斷操作直到找不到 \(i, j\)(極差不大於 \(1\))。

最後能轉化為的好的序列是唯一確定的,設為 \(B\)

非法當且僅當存在 \(\sum_{j = 1}^iA_i > \sum_{j = 1}^iB_i\)

一次操作 \(i, j\) 會使 \([i, j)\) 的字首和加一,\((j, n]\) 的字首和不變,即始終滿足 \(\forall i,\ B_i \ge A_i\)

必要性顯然,考慮充分性。

不妨將一次操作當成 \(B\) 字首和上的區間加,如果任意 \(B_i \ge A_i\),最樸素的構造即對 \((i, i + 1)\) 操作 \(B_i - A_i\) 次。

submission

C

\(f(x) = \sum [A_i = x],\ g(x) = \sum[i < j \land A_i + A_j = x]\)

\(g\) 可以透過 \(f * f\) 再減掉點東西得到。

列舉 \(1 \le i \le n\),判斷是否存在 \((j, k),\ j < k\) 對使得:

  • \(i \ne j \land i \ne k\)
  • \(A_i + A_j + A_k = X\)

一旦我們知道 \((j, k)\) 是否存在,即可用 \(O(N)\) 的時間找到一組解(列舉 \(j\),至多列舉三個 \(A_k = X - A_i - A_j\))。

考慮計算 \((j, k)\) 的個數:

\[g(X - A_i) - \left(f(X - 2A_i) - [3A_i = X]\right) \]

即所有 \(j < k,\ A_j + A_k = X - A_i\) 的方案減去 \(i\) 為其中之一的方案。

時間複雜度 \(O(N + V\log V)\)。(NTT模數取1374389534721)

submission

D

E

首先有樸素 DP:

\[f_i = \sum_{j = 1}^{i - 1}f_j + 2^{j - 1}\gcd(a_i, a_j) \]

注意到

\[\begin{aligned} \gcd(n, m) &= \sum_{d \mid \gcd(n, m)} \varphi(d)\\ \\ &= \sum_{d \mid n \land d \mid m} \varphi(d)\\ \\ &= \sum_{d \mid n} [d\mid m]\varphi(d)\\ \end{aligned} \]

\(f\) 部分先不管,最後加一個字首和即可:

\[\begin{aligned} &= \sum_{j = 1}^{i - 1}2^{j - 1}\sum_{d\mid a_i} [d \mid a_j]\varphi(d)\\ \\ &= \sum_{d\mid a_i}\varphi(d) \sum_{j = 1}^{i - 1}[d \mid a_j]2^{j - 1}\\ \end{aligned} \]

同時維護 \(g(d) = \sum_{d\mid a_j} 2^{j - 1}\),時間複雜度 \(O(V\ln V + Nd(V))\)

submission

相關文章