MLE on test #49
查看原帖
MLE on test #49
246331
mystic_qwq楼主2024/8/12 10:49
#include<bits/stdc++.h>
using namespace std;
#include<bits/extc++.h>
using namespace __gnu_pbds;
cc_hash_table<int,int> cnt[20];
#define int long long
#define S short
int n,m,k,P,a[20][20];
//unordered_map<int,int> cnt[20];
inline void dfs1(S x,S y,int w){
  if(x==P-1){
    ++cnt[y][w];
    if(y==m-1) return;
    return dfs1(x,y+1,w^a[x][y+1]);
  }
  if(x+1<P) dfs1(x+1,y,w^a[x+1][y]);
  if(y+1<m) dfs1(x,y+1,w^a[x][y+1]);
}
int i,ans;
inline void dfs2(S x,S y,int w){
  if(x==n-1&&y==m-1){
    if(cnt[i].find(k^w)!=cnt[i].end())
      ans+=cnt[i][k^w];
    return;
  }
  if(x+1<n)dfs2(x+1,y,w^a[x+1][y]);
  if(y+1<m)dfs2(x,y+1,w^a[x][y+1]);
}
main(){
  cin>>n>>m>>k;
  for(int i=0;i<n;++i)
    for(int j=0;j<m;++j)
      cin>>a[i][j];
  if(n==1) {             
    int res=0;
    for(int i=0;i<m;++i) res^=a[0][i];
    //cout<<res<<" \n";
    cout<<(res==k)<<'\n';
    return 0;
  }
  P=n/2;
  dfs1(0,0,a[0][0]);
  for(i=0;i<m;++i)dfs2(P,i,a[P][i]);
  cout<<ans<<'\n';
}
2024/8/12 10:49
加载中...