题解-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