題解-CF1542


A. Odd Set

看奇數和偶數的數的個數相不相等即可。

B. Plus and Multiply

枚舉所有 \(a^k\) 然后判斷能不能加若干次 \(b\) 的到 \(n\)

C. Strange Function

\(g(i)=\text{lcm}(1,2,\dots,i)\),不難發現答案為 \(\sum_{}i\times(\lfloor\frac{n}{g(i-1)}\rfloor-\lfloor\frac{n}{g(i)}\rfloor)\)

D. Priority Queue

考慮對於每個 \(x\) 的貢獻,首先他得被選中,記這次操作為 \(X\),然后還不能被刪掉。考慮對這樣的 \(B\) 計數。形式化講就是被選中后遇到減號時小於 \(x\) 的數的個數得大於 \(0\)

考慮 \(dp\),記 \(f[i,j]\) 代表前 \(i\) 個操作有 \(j\) 個小於 \(x\) 的數的方案數(\(X\) 操作后,也就是說我們 dp 時是不包含操作 \(X\) 的。)。有如下轉移:\(f[i,j]=f[i-1,j],f[i,(j-1,0)]=f[i-1,j](i<X),f[i,j-1]=f[i-1,j](i>X),f[i,j+1]=f[i-1,j](x_i<=x_X)\),注意遇到相同的時候加一個字典序就可以去重了。

E. Abnormal Permutation Pairs

orz dead_x 爆切 E2。

思路來自神蛙。

\(f[i,j]\) 代表長度為 \(i\) 的兩個排列逆序對之差為 \(j\) 的方案數。

由於這個 \(j\) 有可能是負數所以還需全部加上一個常數。

考慮從小到大枚舉,有如下轉移:

\[f[i,j]=f[i-1,k]\times\sum_{k_1=0}^{i}\sum_{k_2=0}^{i}[k_2-k_1=j-k] \]

我們發現這是一個背包。而背包可以用生成函數來表示。

形式化來講,第 \(i\) 個數的生成函數即為

\[\sum_{j=0}^{i-1}x^j\sum_{j=0}^{i-1}x^{-j}=\frac{x^{i+1}+x^{-i+1}-2x}{(x-1)^2} \]

於是上面直接轉移,再做兩次回退即可。至於回退背包是什么,你可以看看這道題 消失之物

這一部分復雜度 \(O(n^3)\)

在算答案的時候先枚舉公共前綴的長度,然后枚舉不同的數是哪兩個,然后所需逆序對數即知道了。復雜度 \(O(n^3)\)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM