zoukankan      html  css  js  c++  java
  • 省选模拟62

    A. Fable

      对于一个序列求出来冒泡排序k轮之后的结果。

      考虑用逆序对来搞这个东西,显然排序一轮之后某个位置的逆序对数会-1,并且向前移动一格,所以最终状态的每个位置的逆序对数可以简单得到。

      然后倒序处理就不用平衡树了,用权值线段树查询全局k大即可。

    B. Fiend

      发现要求的和逆序对个数的奇偶性有关,所以不难想到行列式。

      那么不难发现就是求行列式的正负性。 直接暴力是$O(n^3)$的。

      考虑按照每列来处理,对于每一列找到左端点为这一列且右端点最小的那一行和当前行交换。然后进行消元,将所有含这一列的行全部消掉。

      这样可以发现实际上就是将这一列的所有行转移到了另一列,那么需要一种支持合并,查询最小值的数据结构,各种可并堆就可以完成。当然set启发式合并也行。

      

    C. Flair

      考虑暴力求出来$max(c_i c_j)$以内的答案,然后剩余部分可以发现,若选的个数是$gcd(c_i)$的倍数那么一定没有贡献,所以我们只要在模$gcd(c_i)$的意义下考虑。

      发现在模意义下,由于多项式的长度不长,这个东西可以用生成函数简单计算,只要打一个特殊的多项式快速幂即可。

      由于模数不是质数,所以还要用MTT来计算卷积。

  • 相关阅读:
    Oracle建立表空间和用户
    fscanf()函数具体解释
    三层架构(我的理解及具体分析)
    ListView嵌套ListView优化
    Android xml 解析
    玩转Web之servlet(三)---一张图看懂B/S架构
    jquery.scrollTo-min.js
    C#中MessageBox使用方法大全(附效果图)
    hdu 1882 Strange Billboard(位运算+枚举)
    MySQL 通配符学习小结
  • 原文地址:https://www.cnblogs.com/hzoi-cbx/p/12634412.html
Copyright © 2011-2022 走看看