后知后觉,mex的计算那里从后往前计算只需要一个变量保持增长就可以达到O(n)复杂度了😭 import sys def get_mex(elements): mex = [] tempmex = 0 tempele = set() for i in reversed(range(len(elements))): tempele.add(elements[i]) while tempmex in tempele: tempmex += 1 mex.append(tempmex) return reversed(mex) def calc_min(elements, mex, k, x): cost = min(x, k*mex[-1]) for i in reversed(range(len(elements)-1)): cost = min(k*mex[i], x+cost) return cost T = int(sys.stdin.readline().strip()) for _ in range(T): temp = sys.stdin.readline().strip().split() n,k,x = int(temp[0]), int(temp[1]), int(temp[2]) temp = sys.stdin.readline().strip().split() elements = [int(i) for i in temp] mex = get_mex(elements) result = calc_min(elements, mex, k, x) print(result)