zoukankan      html  css  js  c++  java
  • permu 莫队 总结

    由于每次询问静态区间里完整值域段的最大大小

    貌似很好用莫队转移,所以考虑怎么转移

    当给它扩展一个数时,就是给值域添加了一个值

    这个值可能已经存在,也可能是新的

    有的神仙做法是维护了一个并查集,然而我这码力..

    所以我用了一个更加初级的操作,给每个点打上向左连续最远和向右连续最远的标记

    添加一个新点时,同时更新它的向左连续最远和向右连续最远的值的标记

    这是添加,删除呢

    目前来看,如果不记录每个点的影响及其所有后续影响及其影响前的状态,删除操作就算萎了

    所以要尽量不删除

    可以知道莫队有个性质,在同一个左端点分块里,右端点具有单调性

    虽然左端点没单调性,但他们的范围限制在一个很小的区间里(根号N的分块里)

    而且对于每个左端点分块,跑一遍O(N)的操作是没问题的

    如果只想添加,不想删除的话..

    每次换个分块就把计数清空,把左右端点放在分块的右端点,记录此状态state

    每次拓展右边,更新state

    每次拓展左边,记录拓展前的state,拓展后恢复state

    这样保证了每个询问至多有个根号N复杂度的左记录和恢复

    每个分块至多有个O(N)的清空

    复杂度变成了O(N√N).

  • 相关阅读:
    C#异常小知识
    Cisco路由器配置学习-ip accounting
    Sublime Text 3预览Markdown
    什么是permit-inside功能
    锐捷双出口
    思科双出口+策略路由+NAT
    github常见操作和常见错误
    网易注册页面知识点
    java,xml等注释删除,正则表达式使用123
    简单多线程是否安全判断
  • 原文地址:https://www.cnblogs.com/yxsplayxs/p/11241877.html
Copyright © 2011-2022 走看看