time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
There is a field of size 2×22×2. Each cell of this field can either contain grass or be empty. The value ai,jai,j is 11 if the cell (i,j)(i,j) contains grass, or 00 otherwise.
In one move, you can choose one row and one column and cut all the grass in this row and this column. In other words, you choose the row xx and the column yy, then you cut the grass in all cells ax,iax,i and all cells ai,yai,y for all ii from 11 to 22. After you cut the grass from a cell, it becomes empty (i. e. its value is replaced by 00).
Your task is to find the minimum number of moves required to cut the grass in all non-empty cells of the field (i. e. make all ai,jai,j zeros).
You have to answer tt independent test cases.
Input
The first line of the input contains one integer tt (1≤t≤161≤t≤16) — the number of test cases. Then tt test cases follow.
The test case consists of two lines, each of these lines contains two integers. The jj-th integer in the ii-th row is ai,jai,j. If ai,j=0ai,j=0 then the cell (i,j)(i,j) is empty, and if ai,j=1ai,j=1 the cell (i,j)(i,j) contains grass.
Output
For each test case, print one integer — the minimum number of moves required to cut the grass in all non-empty cells of the field (i. e. make all ai,jai,j zeros) in the corresponding test case.
Example
input
Copy
3
0 0
0 0
1 0
0 1
1 1
1 1
output
Copy
0 1 2
解题说明:此题是一道模拟题,每次可以选择一行+一列进行清除,找规律能发现就是把4个数加起来除以2。注意四个数加起来为1的时候要单独考虑。
- #include
-
- int main()
- {
- int n, a, b, c, d, i;
- scanf("%d", &n);
- for (i = 0; i < n; i++)
- {
- scanf("%d%d", &a, &b);
- scanf("%d%d", &c, &d);
- if (a + b + c + d == 1)
- {
- printf("1\n");
- }
- else
- {
- printf("%d\n", (a + b + c + d) / 2);
- }
- }
- return 0;
- }