CSP2024-30

Lu_xZ發表於2024-10-01

A

題意:將一個圓等分為 \(K\) 分,給出其中 \(n\) 個等分點的編號,\(x_i < x_{i + 1}\)

有向邊 \(i \to j\) 存在,當且僅當 \(j\) 是距離 \(i\) 最大的點(不唯一),且與圖中其他邊無交點(端點不算)。

求圖中最多有多少條邊。\(3 \le K \le 10^9, 3 \le n \le \min(K, 10^5)\)

引理:不存在 \(A \to B,\ C \to D\),其中 \(A, B, C, D\) 互不相同。

作過 \(A\) 的直徑 \(AA^\prime\),作 \(B\) 關於 \(AA^\prime\) 的對稱點 \(B^\prime\)

  • 如果 \(C\)\(D\)\(\overset{\LARGE\frown}{BB^\prime}\) 上,由於大弧對大角 \(AC(D) > AB\)\(A \to B\) 的邊不能存在,矛盾。
  • 如果 \(\overset{\LARGE\frown}{CD}\) 包含於 \(\overset{\LARGE\frown}{AB}\)\(CB > CD\),矛盾。
  • 如果 \(C\)\(\overset{\LARGE\frown}{AB}\)\(D\)\(\overset{\LARGE\frown}{AB^\prime}\),兩邊相交,不合法。

因此合法的狀態只有兩種:以某個點為中心的菊花狀圖;三條邊首尾相連形成的等腰三角形。

注意兩點的距離可以由對應弧長表示,也可以表示為跨過了多少整段:\(\min(\vert x_i - x_j\vert,\ K - \vert x_i - x_j\vert)\),這是個凸函式,可以二分找分界點。

求出離每個 \(i\) 距離最大的點集(最多兩個),時間複雜度 \(O(n\log n)\)。(雙指標能做到線性)

submission

B

題意:給出字串 \(s, t\),文字串 \(T\) 的權值定義為 \(s\) 作為子序列在 \(T\) 出現的次數乘上 \(t\) 作為子序列在 \(T\) 出現的此次數。

給定 \(S\),求 \(S\) 所有子串的權值和。\(\vert S\vert \le 10^5,\ \vert s\vert, \vert t\vert \le 20\)

考慮沒對子序列 \((s_1, s_2)\) 對答案的貢獻(被多少區間包含),顯然是第一個出現的位置乘上從最後位置開始的一個字尾長度。

\(f(i, j, k)\) 表示前 \(i\) 個字元,匹配到 \(s_1\) 的第 \(j\) 位,\(s_2\) 的第 \(k\) 位的開頭位置和。

  • \(f(i, j, k) \gets [T_i = s_{1, j} = {s_{2, k}}]\times f(i -1, j - 1, k - 1)\)
  • \(f(i, j, k) \gets [T_i = s_{1, j}]\times f(i -1, j - 1, k)\)
  • \(f(i, j, k) \gets [T_i = s_{2, k}]\times f(i -1, j, k - 1)\)
  • \(f(i, 0, 1) \gets [T_i = s_{1, 1}] \times f(i - 1, 0, 0),\ f(i, 1, 0) \gets [T_i = s_{2, 1}] \times f(i - 1, 0, 0),\ f(i, 1, 1) \gets [T_i = s_{1, 1}= s_{2, 1}] \times f(i - 1, 0, 0)\)
  • \(f(i, j, k) \gets f(i -1, j, k)\)

考慮以 \(i\) 結尾的貢獻,不能由第四種轉移過來(因為對應方案 \(i\) 不是結尾),前四種轉移過後的 \(f(i, \vert s_1\vert, \vert s_2\vert)\) 乘上 \(\vert T\vert - i + 1\)

submission

C

定義函式:

\[f(u, x, y) = \begin{cases} u - y & x = 1\\ u& 1 < x \le y,\ x \perp y\\ -x \times y& x \ne 1,\ x \mid y\\ 0 & \text{otherwise} \end{cases} \]

給定長度為 \(n\) 的陣列 \(a\),定義一段區間 \([l, r]\) 的優美度等於:

\[\sum_{i = 1}^{10^6}\sum_{j = l}^{r} f(u, i, a_j) \]

\(q\) 次詢問,每次給出 \(l\) 和引數 \(u\),求 \(r \ge l\) 的最大優美度,以及對應最小的 \(r\)

資料範圍:\(n, q \le 5 \times 10^5,\ 1 \le a_i \le 10^6,\ 1 \le u_i \le 1.8 \times 10^7\)

交換一下求和號:

\[\sum_{j = l}^{r}\sum_{i = 1}^{10^6} f(u, i, a_j) \]