P15574 [USACO26FEB] Milk Buckets S

题目描述

有 $N$($1\le N\le 2\cdot 10^5$)个桶堆叠在一起,从上往下数第 $i$ 个桶的容量为 $a_i$ 加仑($1\le a_i\le 10^9$)。最上方桶的上面有一个水龙头,每秒向第一个桶中注入 $1$ 加仑牛奶。桶 $N$ 的下方有一个池子。 当一个桶在 $t$ 秒后达到其容量时,它会在第 $t+1$ 秒开始时翻转,将其内容物倒入下方的桶(如果不是最后一个桶)或池子(如果是最后一个桶)(并在第 $t+1$ 秒结束时恢复为接收状态)。桶在翻转期间无法收集牛奶;在这一秒内从上方桶流来的任何牛奶都会损失。此外,任何超过下方桶容量的部分也会损失。 处理 $Q$($1\le Q\le 3\cdot 10^5$)个查询,每个查询由三个整数 $i$、$v$ 和 $t$ 指定: - 首先,设置 $a_i = v$($1\le i\le N$,$1\le v\le 10^9$)。 - 然后回答以下问题:假设在时间 $0$ 时,所有桶和池子都是空的。确定在 $t$ 秒后池子中的牛奶加仑数($1\le t\le 10^{18}$)。 这些 $a_i = v$ 的更新会持续影响后续查询。

输入格式

第一行包含 $N$。 第二行包含 $a_1 \dots a_N$。 下一行包含 $Q$。 然后接下来的 $Q$ 行每行包含三个整数 $i$、$v$ 和 $t$。这意味着你应该先设置 $a_i = v$,然后回答针对 $t$ 的问题。

输出格式

对每个问题,输出一行答案。

说明/提示

#### 样例 1 解释 当 $a=[1, 1, 1]$ 时, - 桶 $1$ 在时刻 $2,4,6,\dots$ 翻转 - 桶 $2$ 在时刻 $3,5,7,\dots$ 翻转 - 桶 $3$ 在时刻 $4,6,8,\dots$ 翻转 当 $a=[2, 1, 1]$ 时, - 桶 $1$ 在时刻 $3,6,9,\dots$ 翻转 - 桶 $2$ 在时刻 $4,7,10,\dots$ 翻转 - 桶 $3$ 在时刻 $5,8,11,\dots$ 翻转 当 $a=[2, 2, 1]$ 时, - 桶 $1$ 在时刻 $3,6,9,\dots$ 翻转 - 桶 $2$ 在时刻 $4,7,10,\dots$ 翻转 - 桶 $3$ 在时刻 $5,8,11,\dots$ 翻转 ### 评分标准 - 输入 4-5:$N \le 10$,$Q\le 100$,且所有 $t\le 10^4$ - 输入 6-11:$N\le 10^3$,$Q\le 10^4$ - 输入 12-23:无额外限制。 题目来源:Akshaj Arora 翻译由 DeepSeek 完成