10.7 模擬賽

2huk發表於2024-10-07

覆盤

T1 看上去不難。一開始以為列舉 \(a, b\),然後考慮平方差。於是想出了 這道題 的解法。但是轉化不過去。後來發現因為 \(k\) 很小直接暴力預處理就行。30min 左右過大樣例。

T2 一眼不會。想到了 P1521 求逆序對 但還是不會做。

T3, T4 顯然不可做。有了前幾場的經驗,先把所有特殊性質+暴力分打了。不到 11:00 算得分 \(100+26+36+44\)

對拍 T1 + T3 基環樹。

剩下時間都在想 T2 的狀壓 DP。然後 T4 做了個隨機的 \(20\) 部分分。

離場。最終 \(100+26+(20,36)+40 = 204\)。T3 最開始交錯了程式碼。T4 因為沒有相容 Sub2,3 導致 Sub2 全掛。

補題 \(100+100+56+64 = 320\)

總結

不足:

  • subtask 分類出錯(老毛病)

題解

A. Sing Alive

列舉 \(c, d\)。問題變成求有多少 \(a, b\) 滿足 \(a^2+b^2=d^2+k-c^2\)。注意到 \(a, b \le n \le 2000\) 所以暴力預處理即可。

這個題沒有難度。說一下賽時想到的另一個題 U488066 Sing Alive 2。這裡省去了列舉 \(a, b\) 一步,但是 \(k\) 變大,且 \(c, d\) 少去了 \(\le n\) 的限制。

首先平方差 \((c-d)(c+d)=k\)

這兩個東西一定都是 \(k\) 的約數。我們設 \(c-d=x\)\(x \mid k\)),那麼另一個一定可以表示成 \(\dfrac kx\)

但是這樣的正整數對 \((x, \dfrac kx)\) 能對應幾個 \((c, d)\)?不難發現最多兩個。即當 \(x \equiv \dfrac kx \pmod 2\) 時,\(c=\dfrac 12 (x+\dfrac kx),d=x-c\) 是唯一一組解。

於是問題變成了:求有多少 \(k\) 的約數 \(x\) 滿足 \(x \equiv \dfrac kx \pmod 2\)

分類討論:

  • \(k\) 為奇數:那麼 \(k\) 的約數一定也是奇數。所以 \(x\) 可以是 \(k\) 的約數中的任意一個。求 \(k\) 的約數個數即可。
  • \(k\) 為偶數:設 \(k = 2k_0\)。那麼 \(x \equiv \dfrac kx \equiv 1 \pmod 2\) 顯然不合法。所以 \(k, \dfrac kx\) 都需要是偶數。設 \(k = 2k_1, \dfrac kx = 2k_2\),則原式為 \(2k_0=2k_1+2k_2\),即 \(k_0=k_1k_2\)。此時我們對 \(k_1,k_2\) 的奇偶性沒有要求。於是答案是 \(k_0\) 的約數個數。

這樣做答案會大一倍。原因是