codeforces 1151 B

时间:2023-12-18 20:25:56

codeforces 1151  B

codeforces 1151  B  1600fen

题意:n*m的矩阵,问能否从n行中每行选一个数 异或 大于0

解析:刚开始看没思路,想用dfs跑一遍,看到500的时候打消了这个念头(500^500),

其实很简单,随便找一组数据,让他们异或好,结果是零的话,只要存在每行存在与挑选的那个数不相等的就可以了(不相等的数异或不为0)

 #include <iostream>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <string>
#include <map>
#include <iomanip>
#include <algorithm>
#include <queue>
#include <stack>
#include <set>
#include <vector>
const int maxn = +;
#define ll long long
#define MAX INT_MAX
#define FOR(i,a,b) for( int i = a;i <= b;++i)
using namespace std;
int n,m,temp,ki,kj;
int a[maxn][maxn];
int main()
{
// freopen("D:\\common_text\\code_stream\\in.txt","r",stdin);
// freopen("D:\\common_text\\code_stream\\out.txt","w",stdout);
cin>>n>>m;
for(int i=;i<=n;++i)
{
for(int j=;j<=m;++j)
{
cin>>a[i][j];
}
}
temp=a[][];
for(int i=;i<=n;++i)
{
temp^=a[i][];
}
if(temp>)
{
cout<<"TAK"<<endl;
FOR(i,,n)
{
cout<<<<" ";
}
return ;
}
else
{
for(int i=;i<=n;i++)
{
for(int j=;j<=m;++j)
{
if(a[i][j]!=a[i][])
{
ki=i;
kj=j;
cout<<"TAK"<<endl;
for(int i=;i<=n;++i)
{ if(i==ki)
cout<<kj<<" ";
else cout<<<<" "; }
return ;
} } }
cout<<"NIE"<<endl;
}
}