分析
题目有一个特点就是 b数组是一个单调不递减,然后因为ai = aj 然后 bi = bj,所以可以得到i~~~j之间的元素必须是全部相同的才行,即这样区间内的值是相同的,这样就只用计算不再这些区间内的位置,比如 数组a = {1 3 1 3 5} b[0]~b[3] 全是0,没在这个区间的只有最后一个位置,所以b数组只有两种情况
py 代码
from collections import deque
INF = 998244353
n = int(input().strip())
lis = list(map(int,input().strip().split()))
f = []
equils = dict()
for i in range(n):
if lis[i] not in equils.keys():
equils[lis[i]] = [i,-1]
else:
equils[lis[i]][1] = i
for a,b in equils.items():
if b[1]!=-1:
f.append(b)
res = 1
point = 0
for i in f:
if point < i[0]:
res = (res * 2**(i[0] - point)) % INF
if point < i[1]:point = i[1]
if n-1 > point:res = (res * 2**(n-1 - point)) % INF
print(res)