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)的部分去掉统一统计时候的答案,然后暴力背包算出来这一部分的贡献即可。

  • 相关阅读:
    Python文件操作
    Python操作MySQL数据库
    Can't connect to MySQL server (10065)
    CentOS安装Navicat
    机器学习中Batch Size、Iteration和Epoch的概念
    Python禁用GC优化性能
    TensorFlow迭代速度变慢的问题
    Linear SVM和LR的区别和联系
    拉格朗日乘子法和KKT条件
    Python机器学习(1):KMeans聚类
  • 原文地址:https://www.cnblogs.com/Lrefrain/p/12633905.html
Copyright © 2011-2022 走看看