zoukankan      html  css  js  c++  java
  • 题解-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))

  • 相关阅读:
    E语言一种特殊的找按钮事件方法
    一个后门木马的简单分析
    win32汇编学习笔记
    偶尔那么蛋疼一次
    新建springboot子模块时,pom文件project根标签会报红
    SQL Server 中用While循环替代游标(Cursor的解决方案
    修改IIS设置延长DEBUG时间
    SharePoint 201 ListViewByQuery Control 应用
    Add ContentType to pages library
    SharePoint 2010 如何取得ListItem的Attachements
  • 原文地址:https://www.cnblogs.com/zcr-blog/p/14968954.html
Copyright © 2011-2022 走看看