Codeforces 1010F Xor-Paths 搜索暴力!

Posted zhenghanghu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces 1010F Xor-Paths 搜索暴力!相关的知识,希望对你有一定的参考价值。

 

 1 #include<iostream>
 2 #include<map>
 3 using namespace std;
 4 
 5 long long a[25][25],ans,k,x1[25];
 6 int n,m,mid;
 7 
 8 map<long long, int> mp[25][25];
 9 
10 void dfs1(int x,int y,long long k1,int cnt){//从x,y的位置搜到中间行  == k1是一路上^得到的数 包括(x,y) 
11     if(cnt==mid) mp[x][y][k1]++;
12     else if(y==m) dfs1(x+1,y, k1^a[x+1][y],cnt+1 );
13     else if(x==n) dfs1(x,y+1, k1^a[x][y+1],cnt+1 ); 
14     else { dfs1(x+1,y,k1^a[x+1][y],cnt+1); dfs1(x,y+1,k1^a[x][y+1],cnt+1); }
15 }
16 
17 void dfs2(int x,int y,long long k1,int cnt){//从x,y的位置搜到第(n+1)/2行  == k1是一路上^得到的数,但没有包括(x,y)
18      if(cnt==n+m-2-mid) ans+=mp[x][y][k^k1];
19     else if(y==1) dfs2(x-1,y, k1^a[x][y],cnt+1 );
20     else if(x==1) dfs2(x,y-1, k1^a[x][y],cnt+1 ); 
21     else { dfs2(x,y-1,k1^a[x][y],cnt+1); dfs2(x-1,y,k1^a[x][y],cnt+1); }
22 }
23 
24 int main(){
25     cin>>n>>m>>k;
26     for(int i=1;i<=n;i++)
27         for(int j=1;j<=m;j++) cin>>a[i][j];
28         
29     mid=(n+m-2)/2;//一共要走n+m-2次,走了一半的次数走到哪哪就定义成中间行的一部分
30     //从(1,1)搜到中间那一行 
31     dfs1(1,1,a[1][1],0); 
32     //从(n,m)搜到中间那一行
33     dfs2(n,m,0,0);
34     cout<<ans;
35     return 0;
36 }

 

以上是关于Codeforces 1010F Xor-Paths 搜索暴力!的主要内容,如果未能解决你的问题,请参考以下文章

xshell6要继续使用此程序,您必须应用最新的更新或使用新版本处理

xshell6要继续使用此程序,您必须应用最新的更新或使用新版本处理

Xshell 6 提示 “要继续使用此程序,您必须应用最新的更新或使用新版本”

Xshell 6 提示 “要继续使用此程序,您必须应用最新的更新或使用新版本”

codeforces上怎么看测试数据

如何看codeforces做了多少题