4 条题解

  • 2
    @ 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;
    }
    
    • 1
      @ 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;
        

        }

        • -2
          @ 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
          标签
          递交数
          286
          已通过
          171
          上传者