想太多,结果fst了 呜呜呜
在一个 N * M 的矩阵里面每行选一个数,使得选出来的这n个数的异或值大于0 .
直接枚举就好了
#include <bits/stdc++.h>
using namespace std;
const int N = 550;
int n,m;
int a[N][N];
int main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>n>>m;
for(int i = 0;i<n;i++)
for(int j = 0;j<m;j++)
cin>>a[i][j];
int tmp = 0;
for(int i = 0;i<n;i++) tmp ^= a[i][0];
if(tmp > 0) {
cout<<"TAK"<<endl;
for(int i = 0;i<n;i++) cout<<1<<' ';
return 0;
}
for(int i = 0;i<n;i++)
for(int j = 1;j<m;j++){
tmp ^= a[i][0];
tmp ^= a[i][j];
if(tmp > 0){
cout<<"TAK"<<endl;
for(int k = 0;k<i;k++) cout<<1<<' ';
cout<<j+1<<' ';
for(int k = i+1;k<n;k++) cout<<1<<' ';
return 0;
}
}
cout<<"NIE";
return 0;
}
本文探讨了一个算法问题:在N*M的矩阵中,如何选择每行的一个数,使这些数的异或值大于0。通过枚举策略,文章提供了一种有效的解决方案,并附带了完整的C++代码实现。
348

被折叠的 条评论
为什么被折叠?



