我们先来看看简单版本的想法,非常具有启发性
大致的思路见这篇文章
下面是对这篇文章具体操作的阐释
我们先将所有区间按照左端点单调递增排序,并统计每一个区间中\(c_i=1\)的个数(这个直接用前缀和就好了,设\(sum[i][j]\)表示前\(i\)个数中\(c_k=j\)的个数),枚举其中一个区间(设为\([l,r]\)),然后分类讨论(要敢于分类讨论)
如果另一个区间(这里我们指的另一个区间是编号比当前区间更前面的区间)与其不相交,那么我们查询右端点小于\(l\)的所有区间的\(c_i=1\)的个数最大的区间就好了。我们设\(g[i]\)表示区间右端点小于\(i\)的所有区间的\(c_i=1\)的个数最大值
如果另一个区间相交,那么我们枚举当前区间\(c_i=2\)的位置(这个可以用vector预处理),并找出另一个区间,进行分类讨论就好了
hard版本我连题解都看不懂。。。
标签:Doremy,Drying,个数,Version,Plan,端点,区间 From: https://www.cnblogs.com/dingxingdi/p/18073992