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

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

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

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

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

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

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

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

    这是添加,删除呢

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

    所以要尽量不删除

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

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

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

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

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

    每次拓展右边,更新state

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

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

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

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

  • 相关阅读:
    驾照暂时不用年审,放心了
    痛筋
    摘枣
    当了一回山村教师
    补贴山村学校照片
    心中无敌,无敌于天下
    山路
    学会珍惜
    写给部分美女们
    不打羽毛球好多年
  • 原文地址:https://www.cnblogs.com/yxsplayxs/p/11241877.html
Copyright © 2011-2022 走看看