Clarke and puzzle

Accepts: 42
Submissions: 269
Time Limit: 4000/2000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
问题描述
克拉克是一名人格分裂患者。某一天,有两个克拉克($a$和$b$)在玩一个方格游戏。  
这个方格是一个$n*m$的矩阵,每个格子里有一个数$c_{i, j}$。  
$a$想开挂,想知道如何打败$b$。  
他们要玩$q$次游戏,每一次做一次操作:  
1. 取出当中的一个子矩阵$(x_1, y_1)-(x_2, y_2)$玩游戏。两个人轮流行动,每一次只能从这个子矩阵中的一个方格$c_{i, j}$中减掉一个的数$d(1 \le d \le c_{i, j})$,当一个格子的数为$0$时则不能减。如果操作完后另一者无法操作,那么胜利。否则失败。现在$a$作为先手,想知道是否存在一种方案使得自己胜利。  
2. 将$c_{i, j}$的数改成$b$  
输入描述
第一行一个整数$T(1 \le T \le 5)$,表示数据的组数。  
每组数据第一行为三个整数$n, m, q(1 \le n, m \le 500, 1 \le q \le 2*10^5)$。  
接下来是一个$n$行$m$列的矩阵,其中第$i$行第$j$列的数为$c_{i, j}(0 \le c_{i, j} \le 10^9)$。  
接下来时$q$行,第一个数为$opt$。当$opt=1$时,后面接着四个整数,依次表示$x_1, y_1, x_2, y_2(1 \le x_1 \le x_2 \le n, 1 \le y_1 \le y_2 \le m)$,表示一个询问;当$opt=2$时,后面接着三个整数$x, y, z(1 \le x \le n, 1 \le y \le m, 0 \le z \le 10^9)$,表示将$c_{x, y}$更改为$z$。
输出描述
对于每组数据,每个询问输出$a$是否能胜利,如果能,输出$Yes$,否则输出$No$。  
输入样例
1
1 2 3
1 2
1 1 1 1 2
2 1 2 1
1 1 1 1 2
输出样例
Yes
No
Hint
第一个询问:一开始$a$可以在$(1, 2)$的格子上减掉$1$,则接下来无论$b$怎么选,都还剩一个$1$,所以$a$胜利。
第二个询问:无论$a$怎么选,都还剩下一个$1$,所以$b$胜利。