zoukankan      html  css  js  c++  java
  • cojs 疯狂的魔法树 疯狂的颜色序列 题解报告

    疯狂的魔法树

    一个各种操作大杂烩的鬼畜数据结构题目

    首先我们注意到树的形态是半随机的

    我们可以树分块,对树分成若干个块

    对于每个块我们维护一个add标记表示增量

    维护一个vis标记表示覆盖量

    注意标记的下放和两个标记之间的处理

    之后我们对于每个块我们排序,并维护块内的有序化

    这样对于每个查询如果涉及到完整的块二分即可

    否则暴力查询

    这样时间复杂度是O(n*sqrt(n)*log(n))

    疯狂的颜色序列

    很古老的题目,如果去掉强制在线的话我已知的有五种不同的解法

    第一种做法是莫队

    第二种做法是离线将询问排序之后扫描线+树状数组

    第三种做法是计算每个颜色上一次出现的位置,分块块内排序+二分

    第四种做法是树套树,跟分块的原理差不多

    第五种做法也就是我写的代码,我们计算每个颜色上一次出现的位置pre

    那么每次询问等价于询问[L,R]有多少个点的pre值<L

    之后就是可持久化线段树的裸题了

  • 相关阅读:
    AspNetPager
    c#转码解码
    sqlserver插入datetime
    easyui treeJson 带层数
    onblur判断数字
    MemoryStream 转 pdf
    比较全的 C# 操作 Word的代码
    C#代码实现把网页文件保存为mht文件
    C# html转mht
    Asp.Net MVC 在后台获取PartialView、View文件生成的字符串
  • 原文地址:https://www.cnblogs.com/joyouth/p/5440331.html
Copyright © 2011-2022 走看看