这道题在python组里也有出现,题目太水模拟都能直接过
查看原帖
这道题在python组里也有出现,题目太水模拟都能直接过
597677
xfy0x3f楼主2024/5/27 16:30
import sys
from collections import Counter
# in = lambda x: sys.stdin.readline().strip()
# 用了快读也还是卡点
n, m, k = map(int, sys.stdin.readline().strip().split())
mod = 998244353

nums = Counter(map(int, sys.stdin.readline().strip().split()))
for _ in range(m):
    X, Y = map(int, sys.stdin.readline().strip().split())
    # 构建哈希表
    nums = {ke + X: va % mod for ke, va in nums.items() if ke + X > 0}
    for ke, va in nums.copy().items(): # 这里因为是直接在原字典上修改
        # 所以可能会导致修改后的值又被读入 需要复制一份来单独遍历
        if ke > k:
            # 冰山分裂
            del nums[ke]
            nums[1] = (nums.get(1, 0) + (ke - k) * va) % mod
            nums[k] = (nums.get(k, 0) + va) % mod
    if Y != 0:
        nums[Y] = (nums.get(Y, 0) + 1) % mod
    # 计算结果
    print(sum(ke * va % mod for ke, va in nums.items()) % mod)
2024/5/27 16:30
加载中...