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)
Python 蛮力法实现肥不拉几树:数据结构与操作详解

原文地址: https://www.cveoy.top/t/topic/qzrf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录