AT_arc218_f2 [ARC218F2] Buckets
题目描述
**F 和 F2 题的本质是同一道题,只是 $M$ 的限制不同。在 F2 题中,$M = 5$。**
给定一个正整数 $M$。对于以下问题:
> **装水桶**
>
> 你有一个正整数 $N$,以及两个长度为 $N$ 的非负整数序列 $A=(A_1,A_2,\dots,A_N)$ 和 $B=(B_1,B_2,\dots,B_N)$。$A$ 与 $B$ 的所有元素都在 $0$ 到 $M$ 之间(包含 $0$ 和 $M$)。
>
> 有 $N$ 个编号为 $1$ 到 $N$ 的水桶,每个水桶最多能装 $M$ 升水。初始时第 $i$ 个水桶中有 $A_i$ 升水。
>
> 你可以进行如下操作任意多次:
>
> - 选择两个不同的水桶 $i$ 和 $j$,不断地将水从水桶 $i$ 倒入水桶 $j$,只要同时满足以下两个条件:
> - 水桶 $i$ 内还有剩余的水;
> - 水桶 $j$ 内的水少于 $M$ 升。
>
> 你的目标是使得每个水桶 $i$ 恰好有 $B_i$ 升水。请判断是否有办法达到目标状态。
现在给定一个非负整数矩阵 $X=(X_{i,j})(0 \le i,j \le M)$,共 $(M+1)$ 行 $(M+1)$ 列,一共要处理 $Q$ 次如下操作:
- 给定非负整数 $i,j,Y$,满足 $0 \le i,j \le M$。将 $X_{i,j}$ 变为 $Y$。随后,按以下方式生成序列 $A$ 和 $B$:
- 初始化 $A$、$B$ 为两个空序列。
- 对于 $i=0,1,\dots,M$ 的每一个 $i$,依次:
- 对于 $j=0,1,\dots,M$ 的每一个 $j$,依次:
- 重复 $X_{i,j}$ 次:在 $A$ 的末尾添加 $i$,在 $B$ 的末尾添加 $j$。
- 针对长度为 $N = \sum_{i=0}^{M} \sum_{j=0}^{M} X_{i,j}$ 的序列 $A$ 和 $B$,解决上面的“装水桶”问题。
输入格式
输入由标准输入给出,格式如下:
> $M\ Q$
> $X_{0,0}\ X_{0,1}\ \dots\ X_{0,M}$
> $X_{1,0}\ X_{1,1}\ \dots\ X_{1,M}$
> $\vdots$
> $X_{M,0}\ X_{M,1}\ \dots\ X_{M,M}$
> $\mathrm{query}_1$
> $\mathrm{query}_2$
> $\vdots$
> $\mathrm{query}_Q$
每个查询格式如下:
> $i\ j\ Y$
输出格式
输出 $Q$ 行,对于第 $i$ 次查询,如果能够实现目标状态则输出 `Yes`,否则输出 `No`。
说明/提示
### 样例解释 1
每次查询构造出的 $A$、$B$ 序列如下:
- 第一次查询时:$A=(0,3,3),\ B=(0,1,5)$
- 第二次查询时:$A=(0,3,3,4),\ B=(0,1,5,0)$
- 第三次查询时:$A=(0,1,3,3,4),\ B=(0,5,1,5,0)$
### 数据范围
- **$M = 5$**
- $1 \le Q \le 10^6$
- $0 \le X_{i,j},Y \le 10^{17}$
- $0 \le i,j \le M$
- 任意时刻满足 $\sum_{i=0}^{M} \sum_{j=0}^{M} X_{i,j} \ge 1$
- 所有输入均为整数。
由 ChatGPT 5 翻译