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\) 有可能是負數所以還需全部加上一個常數。
考慮從小到大枚舉,有如下轉移:
我們發現這是一個背包。而背包可以用生成函數來表示。
形式化來講,第 \(i\) 個數的生成函數即為
於是上面直接轉移,再做兩次回退即可。至於回退背包是什么,你可以看看這道題 消失之物。
這一部分復雜度 \(O(n^3)\)。
在算答案的時候先枚舉公共前綴的長度,然后枚舉不同的數是哪兩個,然后所需逆序對數即知道了。復雜度 \(O(n^3)\)。
