2 条题解

  • 0
    @ 2025-10-8 16:56:16
    #include <bits/stdc++.h>
    using namespace std;
    int n,a[35][35];
    void gauss()
    {
    	int r=1;
        for(int c=1;c<=n;c++)
        {
            for(int i=r+1;i<=n;i++)
    		{
    			while(a[i][c])
    			{
    				//这里没有倍数bs,异或的本质就没有进位的二进制加法
    				for(int j=1;j<=n+1;j++)a[r][j]=a[r][j]^a[i][j];
    				swap(a[r],a[i]);
    			}
    		}
    		if(a[r][c]!=0)r++;
    		
        }
    	for(int i=r;i<=n;i++)if(a[i][n+1]==1) {printf("Oh,it's impossible~!!\n");return ;}
    	printf("%d\n",(1<<(n-(r-1))));
    }
    int main()
    {
        int T;scanf("%d",&T);
    	while(T--)
    	{
    		scanf("%d",&n);
    		memset(a,0,sizeof(a));
    	    for(int i=1;i<=n;i++ )scanf("%d",&a[i][n+1]);
    	    for(int i=1,x;i<=n;i++)
    	    {
    	    	scanf("%d",&x); 
    	    	a[i][n+1]^=x;
    	    	a[i][i]=1;
    	    }
    	    int x,y;while(scanf("%d%d",&x,&y)!=EOF && x && y)a[y][x]=1;
    	    gauss();
        }
        return 0;
    }
    
    • 0
      @ 2025-10-8 16:56:07
      #include <bits/stdc++.h>
      using namespace std;
      int n,a[35][35];
      void gauss()
      {
      	int r=1;
          for(int c=1;c<=n;c++)
          {
              for(int i=r+1;i<=n;i++)
      		{
      			while(a[i][c])
      			{
      				//这里没有倍数bs,异或的本质就没有进位的二进制加法
      				for(int j=1;j<=n+1;j++)a[r][j]=a[r][j]^a[i][j];
      				swap(a[r],a[i]);
      			}
      		}
      		if(a[r][c]!=0)r++;
          }
      	for(int i=r;i<=n;i++)if(a[i][n+1]==1) {printf("Oh,it's impossible~!!\n");return ;}
      	printf("%d\n",(  1<<( n-(r-1) )  ));
      }
      int main()
      {
          int T;scanf("%d",&T);
      	while(T--)
      	{
      		scanf("%d",&n);
      		memset(a,0,sizeof(a));
      	    for(int i=1;i<=n;i++ )scanf("%d",&a[i][n+1]);
      	    for(int i=1,x;i<=n;i++)
      	    {
      	    	scanf("%d",&x); 
      	    	a[i][n+1]^=x;
      	    	a[i][i]=1;
      	    }
      	    int x,y;while(scanf("%d%d",&x,&y)!=EOF && x &&y)a[y][x]=1;
      	    gauss();
          }
          return 0;
      }
      • 1

      *【高斯消元:异或方程组】开关问题[hdu3949]

      信息

      ID
      409
      时间
      1000ms
      内存
      64MiB
      难度
      4
      标签
      递交数
      47
      已通过
      23
      上传者