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
定義函式:
給定長度為 \(n\) 的陣列 \(a\),定義一段區間 \([l, r]\) 的優美度等於:
\(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\)。
交換一下求和號: