• cojs QAQ的序列 解题报告


    QAQ 这是从论文上搬的一道题目

    但是由于并没有找到题目地址,所以就自己造数据咯

    发现数据无比难造

    (本题数据极弱,暴力或可AC?)

    我们考虑离线的话其实只需要莫队就可以了

    那么在线怎么做呢

    二进制分组?时间复杂度不是很靠谱

    首先我们不难发现当k>sqrt(n)的时候,答案不会超过sqrt(n)

    我们可以预处理出现次数>sqrt(n)的数字

    之后我们可以分块,设S(i,k)表示前i个块中k的出现次数

    每次询问扫描左右不完整的块之后枚举每个数字可以O(1)的判断出现次数是否等于K

    时间复杂度O(n*sqrt(n))

    当k<=sqrt(n)的时候,我们可以设Ans(i,j,k)表示i到j这些块中出现k次的数有多少个

    状态是O(sqrt(n)*sqrt(n)*sqrt(n))的,所以预处理时间复杂度O(n*sqrt(n))

    之后我们暴力扫描左右不完整的块对答案进行调整就可以了

    时间复杂度O(n*sqrt(n))

    这样综合起来我们就得到了一个O(n*sqrt(n))空间且时间为O(n*sqrt(n))的算法

    这样就可以拿到满分辣

  • 相关阅读:
    Designing With Web Standard(一)
    再听姜育恒
    终于找到Effective C Sharp电子版了
    继续下一个题目
    想做就做,要做得漂亮
    空悲还是空杯
    整理,中庸
    分布式系统设计随想
    日志log4
    log4net更换目录
  • 原文地址:https://www.cnblogs.com/joyouth/p/5598857.html
Copyright © 2020-2023  润新知