F - Buckets Editorial /

Time Limit: 2 sec / Memory Limit: 1024 MiB

配点 : 700

問題文

F 問題と F2 問題は同じ問題ですが、M の制約が異なります。F 問題では 1 \le M \le 4 です。

正整数 M が与えられます。ここで、以下の問題を考えます。

Bucket

正整数 N と長さ N の非負整数列 A=(A_1,A_2,\dots,A_N),B=(B_1,B_2,\dots,B_N) が与えられます。A,B の要素は全て 0 以上 M 以下です。

1 から N の番号が付いた N 個のバケツがあります。全てのバケツには水が M L まで入ります。始め、バケツ i には A_i L の水が入っています。

あなたは以下の操作を好きな回数行うことが出来ます。

  • 異なる 2 個のバケツ i,j を選ぶ。以下の条件を両方満たしている間、バケツ i からバケツ j に水を移し続ける。
    • バケツ i にまだ水が残っている。
    • バケツ j に入っている水の量が M L 未満である。

あなたの目標は、全ての i についてバケツ i に水が B_i L 入っている状況にすることです。目標を達成することが出来るか判定してください。

M+1M+1 列の非負整数行列 X=(X_{i,j})(0 \le i,j \le M) が与えられます。以下のクエリを Q 回処理してください。

  • 0 \le i,j \le M を満たす非負整数 i,j,Y が与えられる。X_{i,j}Y に変更する。その後、以下の手順で非負整数列 A,B を得る。
    • 非負整数列 A,B を空数列で初期化する。
    • 以下を i = 0,1,\dots,M の順に行う。
      • 以下を j = 0,1,\dots,M の順に行う。
        • A の末尾に i を、B の末尾に j を追加する操作を X_{i,j} 回行う。
  • 長さ N = \sum_{i=0}^{M} \sum_{j=0}^{M} X_{i,j} の非負整数列 A,B について Bucket を解いたときの答えを求めよ。

制約

  • 1 \le M \le 4
  • 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
  • 入力は全て整数

入力

入力は以下の形式で標準入力から与えられる。

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 行目には \mathrm{query}_i において、目標を達成することが出来るならば Yes を、出来ないならば No を出力せよ。


入力例 1

3 3
0 0 0 0
0 0 2 0
1 0 0 0
0 0 0 0
0 0 0
2 3 1
2 1 1

出力例 1

Yes
No
Yes

1 番目のクエリによって、X=\begin{pmatrix} 0 & 0 & 0 & 0 \\ 0 & 0 & 2 & 0 \\ 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ \end{pmatrix} となり、A=(1,1,2),B=(2,2,0) が得られます。

この場合、例えば以下のような操作列によって目標を達成できます。

  • i = 1,j = 2 とする。各バケツに入っている水の量が (1,1,2) から (0,2,2) になる。
  • i = 3,j = 1 とする。各バケツに入っている水の量が (0,2,2) から (2,2,0) になる。

2 番目のクエリによって、X=\begin{pmatrix} 0 & 0 & 0 & 0 \\ 0 & 0 & 2 & 0 \\ 1 & 0 & 0 & 1 \\ 0 & 0 & 0 & 0 \\ \end{pmatrix} となり、A=(1,1,2,2),B=(2,2,0,3) が得られます。

この場合、どのように操作をしても目標を達成することは出来ません。

3 番目のクエリによって、X=\begin{pmatrix} 0 & 0 & 0 & 0 \\ 0 & 0 & 2 & 0 \\ 1 & 1 & 0 & 1 \\ 0 & 0 & 0 & 0 \\ \end{pmatrix} となり、A=(1,1,2,2,2),B=(2,2,0,1,3) が得られます。

この場合、例えば以下のような操作列によって目標を達成できます。

  • i = 1,j = 2 とする。各バケツに入っている水の量が (1,1,2,2,2) から (0,2,2,2,2) になる。
  • i = 3,j = 1 とする。各バケツに入っている水の量が (0,2,2,2,2) から (2,2,0,2,2) になる。
  • i = 4,j = 5 とする。各バケツに入っている水の量が (2,2,0,2,2) から (2,2,0,1,3) になる。

入力例 2

4 10
45636788580181785 16131322312654301 43477244591521823 6505049084010674 86530627327096446
95921187347997793 55491565467039163 87684565747362311 80318628430974482 12308092878301956
75570615154690027 96403707363045776 14150012766408204 6612197700307407 64417022692908525
5530468643826479 41731276604630756 15675296751519388 59461896803210859 66666666666666666
72767956047192820 18258893791516726 58852629621892634 33333333333333333 29923985408775019
2 1 26541245644686826
2 4 29485791833729050
4 1 21832826336874318
3 2 4953499115446612
2 0 69217973349997921
2 4 23133150029036944
3 4 55834224798559242
1 2 98517007615469735
2 3 3768060024403703
0 4 87241661746072372

出力例 2

No
Yes
No
Yes
No
Yes
No
No
No
No

Score : 700 points

Problem Statement

Problems F and F2 are the same problem with different constraints on M. In Problem F, 1 \le M \le 4.

You are given a positive integer M. Consider the following problem.

Bucket

You are given a positive integer N and non-negative integer sequences A=(A_1,A_2,\dots,A_N) and B=(B_1,B_2,\dots,B_N) of length N. All elements of A and B are between 0 and M, inclusive.

There are N buckets numbered 1 to N. Each bucket can hold up to M liters of water. Initially, bucket i contains A_i liters of water.

You may perform the following operation any number of times.

  • Choose two distinct buckets i and j. Continue pouring water from bucket i into bucket j as long as both of the following conditions are satisfied:
    • Bucket i still has water remaining.
    • The amount of water in bucket j is less than M liters.

Your goal is to have exactly B_i liters of water in bucket i for all i. Determine whether the goal can be achieved.

You are given a non-negative integer matrix X=(X_{i,j})(0 \le i,j \le M) of (M+1) rows and (M+1) columns. Process the following queries Q times.

  • You are given non-negative integers i,j,Y with 0 \le i,j \le M. Change X_{i,j} to Y. Then, obtain non-negative integer sequences A and B by the following procedure.
    • Initialize non-negative integer sequences A and B as empty sequences.
    • For i = 0,1,\dots,M in this order:
      • For j = 0,1,\dots,M in this order:
        • Do this X_{i,j} times: append i to the end of A and j to the end of B.
  • Solve Bucket for the non-negative integer sequences A and B of length N = \sum_{i=0}^{M} \sum_{j=0}^{M} X_{i,j}.

Constraints

  • 1 \le M \le 4
  • 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 at any time.
  • All input values are integers.

Input

The input is given from Standard Input in the following format:

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

Each query is given in the following format:

i\ j\ Y

Output

Output Q lines. The i-th line should contain Yes if the goal can be achieved in \mathrm{query}_i, and No otherwise.


Sample Input 1

3 3
0 0 0 0
0 0 2 0
1 0 0 0
0 0 0 0
0 0 0
2 3 1
2 1 1

Sample Output 1

Yes
No
Yes

The first query makes X=\begin{pmatrix} 0 & 0 & 0 & 0 \\ 0 & 0 & 2 & 0 \\ 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ \end{pmatrix} , and we obtain A=(1,1,2),B=(2,2,0).

In this case, the goal can be achieved by the following sequence of operations, for example.

  • Set i = 1,j = 2. The amount of water in each bucket changes from (1,1,2) to (0,2,2).
  • Set i = 3,j = 1. The amount of water in each bucket changes from (0,2,2) to (2,2,0).

The second query makes X=\begin{pmatrix} 0 & 0 & 0 & 0 \\ 0 & 0 & 2 & 0 \\ 1 & 0 & 0 & 1 \\ 0 & 0 & 0 & 0 \\ \end{pmatrix} , and we obtain A=(1,1,2,2),B=(2,2,0,3).

In this case, the goal cannot be achieved no matter how operations are performed.

The third query makes X=\begin{pmatrix} 0 & 0 & 0 & 0 \\ 0 & 0 & 2 & 0 \\ 1 & 1 & 0 & 1 \\ 0 & 0 & 0 & 0 \\ \end{pmatrix} , and we obtain A=(1,1,2,2,2),B=(2,2,0,1,3).

In this case, the goal can be achieved by the following sequence of operations, for example.

  • Set i = 1,j = 2. The amount of water in each bucket changes from (1,1,2,2,2) to (0,2,2,2,2).
  • Set i = 3,j = 1. The amount of water in each bucket changes from (0,2,2,2,2) to (2,2,0,2,2).
  • Set i = 4,j = 5. The amount of water in each bucket changes from (2,2,0,2,2) to (2,2,0,1,3).

Sample Input 2

4 10
45636788580181785 16131322312654301 43477244591521823 6505049084010674 86530627327096446
95921187347997793 55491565467039163 87684565747362311 80318628430974482 12308092878301956
75570615154690027 96403707363045776 14150012766408204 6612197700307407 64417022692908525
5530468643826479 41731276604630756 15675296751519388 59461896803210859 66666666666666666
72767956047192820 18258893791516726 58852629621892634 33333333333333333 29923985408775019
2 1 26541245644686826
2 4 29485791833729050
4 1 21832826336874318
3 2 4953499115446612
2 0 69217973349997921
2 4 23133150029036944
3 4 55834224798559242
1 2 98517007615469735
2 3 3768060024403703
0 4 87241661746072372

Sample Output 2

No
Yes
No
Yes
No
Yes
No
No
No
No