zoukankan      html  css  js  c++  java
  • 「考试」省选62

    好难啊。
    改的也好难。

    T1
    联赛题。
    我们发现(k)次冒泡排序之后,一个元素最多向左走(k)步。
    那么对于(forall iin[1,k+1])维护(a[i])的最小值。
    那么排序后的(a'[1])为这段的最小值。
    然后维护([1,k+2])的,这些的最小值是(a'[2])的值。
    以此类推。

    T2
    想到了用行列式。
    但是还是不会维护。
    我们发现只需要求这样一个满足条件的矩阵:

    [forall i,jin[L_i,R_i],a_{i,j}=1 ]

    的行列式。
    如果是正数那么我们就赢了。
    0的话平局。
    负数就是魔鬼赢了。
    那么暴力的求是(n^3logn)的。
    我们利用这个矩阵的特殊性质用线段树合并来维护一下。
    按照右端点排序。
    每一行找到(r)最小的且当前位为(i)的行。
    然后交换行。
    消除的时候,把一行的所有信息都转移到(R_i+1)处去。
    这样做一次是(O(nlog^2n))的。

    T3
    多项式题。
    我们把大于(10000)的所有数都统一统计,发现他们的代价全都是关于(gcd({A_i}))循环的。
    那么我们求出这个多项式关于(gcd)的循环卷积快速幂:((px+100-p)^n)即可统计了。
    然后小于(10000)的部分去掉统一统计时候的答案,然后暴力背包算出来这一部分的贡献即可。

  • 相关阅读:
    xfce4-windowck-plugin的替代品
    git使用Beyond Compare作为diff和merge工具
    Visual Studio设置多个快捷键
    scrapy参数-COOKIES_ENABLED 最权威解释, 帮你避坑
    Linux基础使用
    python 所有的库整理
    Nginx配置详解
    15个常用的javaScript正则表达式
    Redis开发建议
    mysql 同步大量数据小技巧
  • 原文地址:https://www.cnblogs.com/Lrefrain/p/12633905.html
Copyright © 2011-2022 走看看