4 条题解

  • 3
    @ 2023-5-2 20:16:23
    #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
      @ 2025-4-19 22:01:40

      #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
        @ 2025-6-6 22:00:22
        /*****************************************
        备注:
        ******************************************/
        #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
          @ 2023-4-27 21:34:59
          #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
          上传者