覆盤
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\) 的約數個數。
這樣做答案會大一倍。原因是