析 合 树 详 解

由于快考试了先咕掉

在阅读本文之前,请保证先读过OI-WIKI上的文章

(没读过也没关系,因为接下来我会先复读

基本定义

首先明确一下连续段的含义,连续段其实就是某一个子段,它的数值经过sort之后是连续的一段,比如3,4,1,2等等,析合树就是由部分连续段组成的树,注意是部分,而不是所有,因为某些特殊数据可以使得连续段达到\(n^2\)个,直接建树会炸。

于是就要抽出一些更有代表性的连续段,称这些段为本原连续段,定义一个本原连续段为在所有的连续段中,不存在与其相交且不包含的连续段,举个例子,比如{1,4,2,3,5},它的本原连续段有{1},{4},{2},{3},{5},{2,3},{2,3,4},{1,2,3,4,5},注意{1,4,2,3}和{4,2,3,5}都不是本原连续段,因为他们两个有交集{4,2,3},并且互不包含,而{2,3,4}和{2,3}虽然有交集{2,3}但是{2,3,4}包含了这个交集。怎么理解这个本原连续段呢?如果学过线性基可能会更好理解,但是没学过也没关系,考虑从集合的角度来理解,本原连续段的集合是能拼出所有连续段的最小唯一集合,就是说如果要这个集合可以拼出所有的连续段,并且还是元素最少的集合,这俩性质不是正好满足我们的要求吗?于是把所有的本源连续段扔到树上,就拼成了 析合树

由于NOIP应该考不到这个东西所以就先了解这么多吧。

posted @ 2020-08-04 07:46  An_Fly  阅读(547)  评论(9编辑  收藏  举报