首页 > 其他分享 >QOJ2559

QOJ2559

时间:2024-04-15 17:34:22浏览次数:25  
标签:候选 包含 QOJ2559 区间 维护 我们 性质

区间维护类的小(?)DS 题。感觉我不怎么会。

题意目的明确,就是要动态维护每个区间能覆盖的范围。

看一看,感觉题目里的条件很神秘,不知道怎么用。不过可以根据特殊性质推出一个性质:存在包含关系一定先选内部。

一开始的思路是用区间互相影响计算,但这个非常复杂,且非常假。

在写暴力的时候突然意识到离散化以后只有 \(\mathcal O(n)\) 次有效修改,也就是说只需要维护修改一小段对所有位置的影响。于是可以用树套树 2log 解决。

但这实在太若只了,肯定不是这么搞,看起来也不是很能过。我们肯定要用上包含的性质。

接下来我不会了,尝试推着题解编一个 motivation:

树套树的问题在于想维护影响到的集合只能从值域出发,如果我们能从区间角度出发就比较舒服,但这要求区间排布具有成段,均摊之类的性质。

区间不包含的部分分可以带给我们启发:此时 \(l,r\) 均递增,包含 \(x\) 的区间是成段的。这个非常舒服。

考虑转化到这种情况,此时我们之前的性质开始发挥作用:只关注内部不包含其它区间的区间。

我们称关注的区间集合为 “有效区间”,未关注过的为 “候选区间”。

此时两两不包含,于是可以 \(\mathcal O(\log n)\) 维护一次修改。当我们删掉这个区间后,会有一些新的候选区间加入我们维护的集合。假设维护的区间是 \(p\),找到 “有效区间” 中 \(p\) 的前驱 \(j\),后继 \(k\),那么候选区间 \(i\) 能加入的充要条件为 \([L_i, R_i)\in (L_j, R_k)\)。我们不断找到 \(L_i>L_j\) 的区间中 \(R_i\) 最小的尝试加入即可。

最后一步感觉是套路的,但我确实不会,前面可能还能想一点吧,也许。

这个题的代码实现还是有点聪明的。一开始注意到了简洁的维护方法但写的时候又开始发电。有点难顶。

标签:候选,包含,QOJ2559,区间,维护,我们,性质
From: https://www.cnblogs.com/663B/p/18136565

相关文章

  • 【大联盟】20230706 Interesting DS Problem(interesting) QOJ2559 【Endless Road】
    题目描述here。题解首先,我们对所有区间离散化,删除一个区间时,我们暴力删除内部还存在的子区间。如果没有区间包含是好做的,因为我们删除一个子区间时,将区间按照左端点排序,可发现包含这个子区间的区间是连续的一个区间。现在考虑有区间包含怎么做。我们考虑维护出当前所有不包含......