hdu 5465 트 리 배열
1 #include <iostream>
2 #include <cstring>
3 #include <cstdio>
4 using namespace std;
5
6 const int N = 501;
7 int a[N][N];
8 int c[N][N];
9 int n, m, q;
10
11 int lb( int i )
12 {
13 return i & -i;
14 }
15
16 void update( int i, int j, int val )
17 {
18 for ( int ii = i; ii <= n; ii += lb(ii) )
19 {
20 for ( int jj = j; jj <= m; jj += lb(jj) )
21 {
22 c[ii][jj] ^= val;
23 }
24 }
25 }
26
27 int sum( int i, int j )
28 {
29 int res = 0;
30 for ( int ii = i; ii > 0; ii -= lb(ii) )
31 {
32 for ( int jj = j; jj > 0; jj -= lb(jj) )
33 {
34 res ^= c[ii][jj];
35 }
36 }
37 return res;
38 }
39
40 int query( int x1, int y1, int x2, int y2 )
41 {
42 int p = sum( x2, y2 );
43 int q = sum( x1 - 1, y2 );
44 int r = sum( x2, y1 - 1 );
45 int s = sum( x1 - 1, y1 - 1 );
46 return p ^ q ^ r ^ s;
47 }
48
49 int main ()
50 {
51 int t;
52 scanf("%d", &t);
53 while ( t-- )
54 {
55 scanf("%d%d%d", &n, &m, &q);
56 memset( a, 0, sizeof(a) );
57 memset( c, 0, sizeof(c) );
58 for ( int i = 1; i <= n; i++ )
59 {
60 for ( int j = 1; j <= m; j++ )
61 {
62 scanf("%d", &a[i][j]);
63 update( i, j, a[i][j] );
64 }
65 }
66 while ( q-- )
67 {
68 int opt;
69 scanf("%d", &opt);
70 if ( opt == 1 )
71 {
72 int x1, y1, x2, y2;
73 scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
74 if ( query( x1, y1, x2, y2 ) )
75 {
76 puts("Yes");
77 }
78 else
79 {
80 puts("No");
81 }
82 }
83 else
84 {
85 int x, y, z;
86 scanf("%d%d%d", &x, &y, &z);
87 update( x, y, a[x][y] ^ z );
88 a[x][y] = z;
89 }
90 }
91 }
92 return 0;
93 }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.