CF1000F One Occurrence
我们考虑离线询问,然后按照右端点排序来处理。对于当前的右端点,我们对每个值维护当询问左端点 L 在一个区间(这个值最后一次出现到倒数第二次出现的位置之间),这个值就不是出现一次的。所以我们考虑的就是当前左端点是否被至少一个这种值覆盖。于是有了个显然的 2log 做法,每个点维护一个 set。。然后就 get 了一个 TLE。
于是考虑我们可以建立线段树表示当某个原数组位置的值想要作为右端点左端点得是多少。于是就变成了一个区间取最小值的问题。
cpp
1 |
|