隨機跳題記錄簿 - 1

PrimalAspid發表於2024-04-05

記符號 \(\circledast\) 表示自己做出來的,\(\circleddash\) 表示賀的。

紫色表示紫色,黑色表示黑色。

P5176 公約數 \(\circledast\)

Description

\[\sum_{i=1}^n\sum_{j=1}^m\sum_{k=1}^p\gcd(ij,ik,jk)\cdot\gcd(i,j,k)\cdot\dfrac{\gcd(i,j)^2+\gcd(j,k)^2+\gcd(i,k)^2}{\gcd(i,j)\cdot\gcd(j,k)\cdot\gcd(i,k)}\\ n,m,p\leq2\cdot10^7 \]

Solution

不知道怎麼評上黑的。

發現 \(\gcd(ij,ik,jk)\) 很醜陋。我們知道 \(\gcd\) 的本質是質因數的指數取 \(\min\),那麼這個就是

\[\newcommand\I{c_i} \newcommand\J{c_j} \newcommand\K{c_k} \begin{aligned} &\min(\I+\J,\I+\K,\J+\K)\\ =~&\I+\J+\K-\max(\I,\J,\K)\\ =~&\I+\J+\K-(\min(\I,\J,\K)-\min(\I,\J)-\min(\I,\K)-\min(\J,\K)+\I+\J+\K)\\ =~&\min(\I,\J)+\min(\I,\K)+\min(\J,\K)-\min(\I,\J,\K)\\ \to&\gcd(i,j)\cdot\gcd(i,k)\cdot\gcd(j,k)/\gcd(i,j,k) \end{aligned} \]

。一通約分,原式變為

\[\sum_{i=1}^n\sum_{j=1}^m\sum_{k=1}^p\gcd(i,j)^2+\gcd(j,k)^2+\gcd(i,k)^2\\ F(n,m):=\sum_{i=1}^n\sum_{j=1}^m\gcd(i,j)^2\\ \to p\cdot F(n,m)+m\cdot F(n,p)+n\cdot F(m,p) \]

\(F\) 就是機械的 Möbius 反演。直接跳到結果是

\[\sum_{x=1}^n\left\lfloor\frac nx\right\rfloor\left\lfloor\frac mx\right\rfloor\sum_{d\mid x}d^2\mu(x/d)\\ f(x):=\sum_{d\mid x}d^2\mu(x/d)\\ f(p^k)=p^{2k}-p^{2k-2} \]

於是線性篩,然後數論分塊。

P4965 薇爾莉特的打字機 \(\purple\circledast\)

Description

有個字串,接下來要往後打字或退格若干次,但是每次操作都可能失靈,求有多少可能的最終字串。

串長、運算元 \(5\cdot10^6\)

Solution

先考慮沒有刪除。那麼這個時候原串沒用。

建一個字典樹,一開始只有根。一次打字如果不失靈就相當於把當前串往字典樹對應字母兒子跳,否則就是留在原地。

那麼一次打字就會讓所有可能當前串節點往該字母方向複製一份,並均成為可能當前串。(說不明白,語文太差。)

可以發現只這麼擴充套件的話整棵樹上每個節點都是可能當前串

我們只關心每次打字之後字典樹大小的變化量。考慮記 \(dp_c\) 表示有 \(c\) 這個兒子的節點有多少個。它們不會在打字 \(c\) 時產生貢獻。再記錄一個字典樹總大小就能很好地狀態轉移了。

然後刪除怎麼做?發現刪除就是向父親複製一份。那麼只有根節點有影響。狀態轉移一樣很簡單。注意原串刪空了就沒法接著刪了。

相關文章