zoukankan      html  css  js  c++  java
  • 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))的算法

    这样就可以拿到满分辣

  • 相关阅读:
    docker 的使用
    WEB应用支持RESTFUL风格方法
    tomcat7 安装 windows 服务
    获取POM.XML依赖的JAR包
    集成 dubbo 微服务
    linux 修改yum 为阿里云源
    poj3904
    2013 ACM/ICPC 长春网络赛E题
    2013 ACM/ICPC 长春网络赛F题
    2013 ACM/ICPC 长沙网络赛J题
  • 原文地址:https://www.cnblogs.com/joyouth/p/5598857.html
Copyright © 2011-2022 走看看