4 条题解
-
3
#include <iostream> #include <cstring> #include <queue> using namespace std; const int n = 5; char a[n][n]; char g[n][n]; void click(int x,int y) { if(x>0) a[x-1][y] ^=1; if(y>0) a[x][y-1] ^=1; if(x<4) a[x+1][y] ^=1; if(y<4) a[x][y+1] ^=1; a[x][y] ^= 1; } int read() { char c; c = getchar(); int ans = 0; while(c>='0'&&c<='9') { ans = ans*10+ (c-'0'); c = getchar(); } return ans; } int main() { int m; cin>>m; while(m--) { for(int i=0;i<5;i++) cin>>a[i]; memcpy(g,a,sizeof(a)); int minn = 30; for(int i=0;i<32;i++) { int ans = 0; for(int j=0;j<5;j++) if(i&(1<<j)) { click(0,j); ans++; } for(int j=0;j<4;j++) { for(int k=0;k<5;k++) { if(a[j][k] == '0') { click(j+1,k); ans++; } } } bool flag = true; for(int j=0;j<5;j++) { if(a[4][j] == '0') { flag = false; break ; } } if(flag) minn = min(minn,ans); memcpy(a,g,sizeof(a)); } if(minn > 6) cout<<-1<<endl; else cout<<minn<<endl; } return 0; }
-
1
#include #include #include using namespace std; const int n = 5; char a[n][n]; char g[n][n]; void click(int x,int y) { if(x>0) a[x-1][y] ^=1; if(y>0) a[x][y-1] ^=1; if(x<4) a[x+1][y] ^=1; if(y<4) a[x][y+1] ^=1; a[x][y] ^= 1; } int read() { char c; c = getchar(); int ans = 0; while(c>='0'&&c<='9') { ans = ans*10+ (c-'0'); c = getchar(); }
return ans;
} int main() { int m; cin>>m; while(m--) { for(int i=0;i<5;i++) cin>>a[i]; memcpy(g,a,sizeof(a)); int minn = 30; for(int i=0;i<32;i++) { int ans = 0; for(int j=0;j<5;j++) if(i&(1<<j)) { click(0,j); ans++; } for(int j=0;j<4;j++) { for(int k=0;k<5;k++) { if(a[j][k] == '0') { click(j+1,k); ans++; } } } bool flag = true; for(int j=0;j<5;j++) { if(a[4][j] == '0') { flag = false; break ; } } if(flag) minn = min(minn,ans); memcpy(a,g,sizeof(a));
} if(minn > 6) cout<<-1<<endl; else cout<<minn<<endl; } return 0;
}
-
0
/***************************************** 备注: ******************************************/ #include <queue> #include <math.h> #include <stack> #include <stdio.h> #include <iostream> #include <vector> #include <iomanip> #include <string.h> #include <algorithm> using namespace std; #define LL long long const int N = 1e5 + 10; const int INF = 0x3f3f3f3f; char a[10][10]; char b[10][10]; void chage(int x , int y) { if(x-1>= 1) b[x-1][y] ^= 1; if(x+1<= 5) b[x+1][y] ^= 1; if(y+1<= 5) b[x][y+1] ^= 1; if(y-1>= 1) b[x][y-1] ^= 1; b[x][y] ^= 1; } int main() { int t; cin >> t; while(t--) { for(int i = 1 ; i <= 5 ; i++) scanf("%s",a[i]+1); int ans = 7; for(int k = 0 ; k < 32 ; k++) { memcpy(b,a,sizeof(b)); int num = 0; for(int i = 0 ; i < 5 ; i++) { int m = 1 << i; if( m & k ) { num++; chage(1 , i+1); } } for(int i = 1 ; i < 5 ; i++) { for(int j = 1; j <= 5 ;j ++) { if(b[i][j] == '0') { num++; chage(i+1,j); } } } int flag = 1; for(int i = 1 ;flag && i <= 5 ;i++) { if(b[5][i] == '0') flag = 0; } if(flag && num < 7) ans = min(ans , num); } if(ans == 7 ) ans = -1; cout << ans << endl; } return 0; }
-
0
#include<bits/stdc++.h> using namespace std; const int n = 5; char a[n][n]; char g[n][n]; void click(int x,int y) { if(x>0) a[x-1][y] ^=1; if(y>0) a[x][y-1] ^=1; if(x<4) a[x+1][y] ^=1; if(y<4) a[x][y+1] ^=1; a[x][y] ^= 1; } int read() { char c; c = getchar(); int ans = 0; while(c>='0'&&c<='9') { ans = ans*10+ (c-'0'); c = getchar(); } return ans; } int main() { int m; cin>>m; while(m--) { for(int i=0;i<5;i++) cin>>a[i]; memcpy(g,a,sizeof(a)); int minn = 30; for(int i=0;i<32;i++) { int ans = 0; for(int j=0;j<5;j++) if(i&(1<<j)) { click(0,j); ans++; } for(int j=0;j<4;j++) { for(int k=0;k<5;k++) { if(a[j][k] == '0') { click(j+1,k); ans++; } } } bool flag = true; for(int j=0;j<5;j++) { if(a[4][j] == '0') { flag = false; break ; } } if(flag) minn = min(minn,ans); memcpy(a,g,sizeof(a)); } if(minn > 6) cout<<-1<<endl; else cout<<minn<<endl; } return 0; }
- 1
信息
- ID
- 8
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 2
- 标签
- 递交数
- 275
- 已通过
- 162
- 上传者