Python 蛮力法实现肥不拉几树:数据结构与操作详解
mod = 998244353
def fib(n):
'计算前 n 个斐波那契数列。'
if n == 0:
return [0]
elif n == 1:
return [1]
else:
fib_seq = [0, 1]
for i in range(2, n):
fib_seq.append(fib_seq[i-1] + fib_seq[i-2])
return fib_seq
def insert_front(lst, fib_seq):
'在数列前方插入斐波那契数列。'
return fib_seq + lst
def insert_back(lst, fib_seq):
'在数列后方插入斐波那契数列。'
return lst + fib_seq
def remove_back(lst, x):
'从数列后方删除 x 个元素。'
return lst[:-x]
def query_max(lst, x, y):
'查询数列区间 [x, y] 的最大值。'
return max(lst[x:y+1])
def query_sum(lst, x, y):
'查询数列区间 [x, y] 的和。'
return sum(lst[x:y+1])
n = int(input())
lst = []
fib_seq = fib(2)
for _ in range(n):
op, x, *args = map(int, input().split())
if op == 1:
fib_seq = fib(x)
lst = insert_back(lst, fib_seq)
elif op == 2:
fib_seq = fib(x)
lst = insert_front(lst, fib_seq)
elif op == 3:
lst = remove_back(lst, x)
elif op == 4:
res = query_max(lst, x, args[0])
print(res % mod)
elif op == 5:
res = query_sum(lst, x, args[0])
print(res % mod)
原文地址: https://www.cveoy.top/t/topic/qzrf 著作权归作者所有。请勿转载和采集!