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))的算法

    这样就可以拿到满分辣

  • 相关阅读:
    java快速排序代码
    java操作redis实现和mysql数据库的交互
    python 操作mysql数据库存
    JAVA 操作远程mysql数据库实现单表增删改查操作
    URI和URL及URN的区别
    day06_字符集设置
    day6_oracle手工建库
    day08_SGA后半部分
    day08_存储
    day05_sqlloader基础
  • 原文地址:https://www.cnblogs.com/joyouth/p/5598857.html
Copyright © 2011-2022 走看看