社区讨论
atcoder D
学术版参与者 4已保存回复 11
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 11 条
- 当前快照
- 1 份
- 快照标识符
- @mhjs5uap
- 此快照首次捕获于
- 2025/11/04 07:37 4 个月前
- 此快照最后确认于
- 2025/11/04 10:23 4 个月前
求调,暴搜,第三个样例炸了
代码:
CPP#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m;
const int N=25;
int a[N][N];
int maxn=0;
bool vis[N][N];
int gt(){
int now=0;
// for(int i=1;i<=n;i++){
// for(int j=1;j<=m;j++){
// printf("%s",vis[i][j]?"1":"0");
// }
// puts("");
// }
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(!vis[i][j]){
now=now^a[i][j];
}
}
}
printf("%lld\n\n",now);
return now;
}
long long maxll(int a,int b){return a>b?a:b;}
void dfs(int x,int y){
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
printf("%s",vis[i][j]?"1":"0");
}
puts("");
}
puts("");
maxn=maxll(maxn,gt());
if(vis[x][y]) return;
if((x==n and y==m) or x>n or y>m) return;
int nx=x,ny=y+1;
if(ny>m) ny=1,nx++;
if(x+1<=n and !vis[x+1][y]){
vis[x][y]=true;
vis[x+1][y]=true;
dfs(nx,ny);
vis[x][y]=false;
vis[x+1][y]=false;
}
if(y+1<=m and !vis[x][y+1]){
vis[x][y+1]=true;
vis[x][y]=true;
dfs(nx,ny);
vis[x][y+1]=false;
vis[x][y]=false;
}
vis[x][y]=false;
dfs(nx,ny);
}
signed main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
dfs(1,1);
printf("%lld\n", maxn);
return 0;
}
回复
共 11 条回复,欢迎继续交流。
正在加载回复...