B. Dima and a Bad XOR(异或+思维)

Posted letlifestop

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了B. Dima and a Bad XOR(异或+思维)相关的知识,希望对你有一定的参考价值。

题目链接:

https://codeforces.com/problemset/problem/1151/B

题目大意:

给你一个n*m的矩阵,每一行你可以选一个数,在每一行都选数的前提下,问你能不能能使每一行选的这些数的异或值不是0,如果存在的话,输出这些下标。

具体思路:

首先我们把第一列异或起来,判断这一列的异或起来的值是不是0,如果不是0的话,直接输出;否则对于每一行,找到一个不和这一行第一个不相等的数,找到就立即停。如果找不到就是凑不出来。

具体证明:

如果每一行找不到的话,就说明每一行的数是相同的,也就是无论你怎么选,结果都是相同的。得证

这题思路属实nb

AC代码:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 # define ll long long
 4 const int maxn = 550;
 5 const ll mod = 1e9+7;
 6 int a[maxn][maxn];
 7 int main()
 8 
 9     int n,m;
10     scanf("%d %d",&n,&m);
11     for(int i=1; i<=n; i++)
12     
13         for(int j=1; j<=m; j++)
14         
15             scanf("%d",&a[i][j]);
16         
17     
18     int flag=1;
19     int ans=0;
20     for(int i=1; i<=n; i++)
21     
22         ans^=a[i][1];
23     
24     if(ans)
25     
26         printf("TAK\n");
27         for(int i=1; i<=n; i++)
28         
29             printf("1 ");
30         
31         printf("\n");
32     
33     else
34     
35         int pos=-1;
36         int tmp=0;
37         for(int i=1; i<=n; i++)
38         
39             int k=0;
40             for(int j=2; j<=m; j++)
41             
42                 if(a[i][j]!=a[i][1])
43                 
44                     pos=i;
45                     tmp=j;
46                     k=1;
47                     break;
48                 
49             
50             if(k)
51                 break;
52         
53         if(pos==-1)
54         
55             printf("NIE\n");
56         
57         else
58         
59             printf("TAK\n");
60             for(int i=1; i<=n; i++)
61             
62                 if(i==pos)
63                     printf("%d ",tmp);
64                 else
65                     printf("1 ");
66             
67             printf("\n");
68         
69 
70     
71     return 0;
72 

 

以上是关于B. Dima and a Bad XOR(异或+思维)的主要内容,如果未能解决你的问题,请参考以下文章

Dima and Salad

CodeForces 366C Dima and Salad:背包dp

Codeforces 358D. Dima and Hares (dp)

F - Dima and Lisa

Codeforces 374 C Inna and Dima (DFS)

codeforces-214(Div. 2)-C. Dima and Salad+DP恰好背包花费