这道题目的意思是对于每个要删除的数字,向前或向后找到一块连续的数字,而它是其中最小的: 很容易看出对于所有要先删除的数字要从大到小删除: 然后对于每个要删除的字母,要找到比他小的,但是在原数列中又靠它最近的数字: 这样的话,很直观最多只能用lg n的复杂度来处理这个问题: 可以用二分查找,也可以用set来代替: 考虑到前面删除的一些数字不能计算进去,还要一个快速计算区间和的算法,用树状数组和线段树都可以: 不过看到tags,上面写着还可以用dsu(disjoint set union)并查集来做…