• 题解-CF1542


    A. Odd Set

    看奇数和偶数的数的个数相不相等即可。

    B. Plus and Multiply

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

    C. Strange Function

    (g(i)= ext{lcm}(1,2,dots,i)),不难发现答案为 (sum_{}i imes(lfloorfrac{n}{g(i-1)} floor-lfloorfrac{n}{g(i)} floor))

    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] imessum_{k_1=0}^{i}sum_{k_2=0}^{i}[k_2-k_1=j-k] ]

    我们发现这是一个背包。而背包可以用生成函数来表示。

    形式化来讲,第 (i) 个数的生成函数即为

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

    于是上面直接转移,再做两次回退即可。至于回退背包是什么,你可以看看这道题 消失之物

    这一部分复杂度 (O(n^3))

    在算答案的时候先枚举公共前缀的长度,然后枚举不同的数是哪两个,然后所需逆序对数即知道了。复杂度 (O(n^3))

  • 相关阅读:
    Makefile编写
    C++静态库与动态库
    C语言编译过程详解
    Fiddler抓HTTPS
    web测试的一些关注点
    Appium使用过程中的一些坑
    Jmeter+Maven+Jenkins的搭建笔记
    华为DHCP+VLANDHCP RELAY配置重点
    华为GVRP配置重点
    802.11协议总结
  • 原文地址:https://www.cnblogs.com/zcr-blog/p/14968954.html
Copyright © 2020-2023  润新知