csp 202312-4 宝藏 python 35分题解

n , m = map(int,input().split())
arr = [[i for i  in map(int,input().split())] for j in range(n)]
def mul_1(a,b):
    return [(a[0]*b[0]+a[1]*b[2])%998244353,(a[0]*b[1]+a[1]*b[3])%998244353,
            (a[2]*b[0]+a[3]*b[2])%998244353,(a[2]*b[1]+a[3]*b[3])%998244353]
for i in range(m):
    que = []
    a = list(map(int,input().split()))
    v = a[0]
    if v == 1:
        arr[a[1]-1].clear()
        for j in range(2,len(a)):
            arr[a[1]-1].append(a[j])
        continue
    if v == 2:
        pos_in = 0
        l , r = a[1],a[2]
        for j in range(l-1,r):
            v1 = arr[j][0]
            if v1 == 1:
                pos_in += 1
                que.insert(0, [arr[j][1], arr[j][2], arr[j][3], arr[j][4],pos_in])
                continue
            if v1 == 2:
                pos_in += 1
                x = len(que)
                que.insert(x, [arr[j][1], arr[j][2], arr[j][3], arr[j][4],pos_in])
                continue
            if v1 == 3:
                if len(que) != 0:
                    for v in range(len(que)):
                        if que[v][4] == pos_in:
                            que.pop(v)
                            pos_in -=1
                            break
    x = len(que)
    if x == 0:
        print(f"1 0 0 1")
    else:
        mid = que[0][0:4]
        for i in range(1, x):
            mid = mul_1(mid, que[i])
        print(*mid)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱喝零度可乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值