zoukankan      html  css  js  c++  java
  • 【洛谷P2447】[SDOI2010]外星千足虫

    外星千足虫

    题目链接

    首先,它一看题解就是个高斯消元

    只是改成了奇偶性的判断

    性质:

    奇数+奇数=偶数

    奇数+偶数=奇数

    偶数+奇数=奇数

    偶数+偶数=偶数

    于是我们用1表示奇数,0表示偶数

    1+1=0

    1+0=1

    0+1=1

    0+0=0

    这个"+"好像可以换成"^" 。。。

    于是开始搞死高斯消元

     1 // luogu-judger-enable-o2
     2 #pragma GCC optimize ("O3")
     3 #include<iostream>
     4 #include<cstdio>
     5 #include<bitset>
     6 using namespace std;
     7 int n,m,R;
     8 bitset<10010> a[20010],ans;
     9 char s[10010];
    10 inline void read(int line)
    11 {
    12     scanf("%s",s);
    13     for(int i=1;i<=n;i++)
    14      a[line][i]=s[i-1]-'0';
    15     getchar();
    16     char c=getchar();
    17     a[line][n+1]=c-'0';
    18 }
    19 inline bool Gauss()                        //高斯消元模板 
    20 {
    21     for(register int i=1;i<=n;i++)
    22     {
    23         int j=i;
    24         while(!a[j][i]&&j<=m) j++;        //向下找到为1的一行 
    25         if(j==m+1) return 0;
    26         R=max(j,R);                        //需要用到的行的最大行号 
    27         if(i!=j) swap(a[i],a[j]);
    28         for(register int j=i+1;j<=m;j++)            //消元,将矩阵变换为上三角矩阵 
    29          if(a[j][i]&&i!=j) a[j]^=a[i];
    30 //        for(int k=1;k<=m;k++,puts(""))
    31 //         for(int l=1;l<=n+1;l++)
    32 //          cout<<a[k][l]<<' ';
    33 //        puts("");
    34     }
    35     return 1;
    36 }
    37 int main()
    38 {
    39     scanf("%d%d",&n,&m);
    40     for(int i=1;i<=m;i++) read(i);
    41     if(Gauss())
    42     {
    43         printf("%d
    ",R);
    44         for(register int i=n;i>=1;i--)    //回代 
    45         {
    46             ans[i]=a[i][n+1];
    47             for(register int j=i+1;j<=n;j++) 
    48              if(a[i][j]&&ans[j]) ans[i]=!ans[i];    //只有奇数对当前答案产生影响 
    49         }
    50         for(register int i=1;i<=n;i++)
    51          if(ans[i]) puts("?y7M#");
    52          else puts("Earth");
    53     }
    54     else puts("Cannot Determine");
    55     return 0;
    56 }
  • 相关阅读:
    Java_大数加法
    Java_找出最多的10个单词
    过滤文本敏感词
    JDK(Win10)下载与安装
    Agile PLM_统计物料消耗
    Java_扑克牌顺子
    Java8_stream_集合对象属性的合并
    Apache Maven下载与安装
    java泛型 无敌
    Java异常处理 无敌
  • 原文地址:https://www.cnblogs.com/yjkhhh/p/8963571.html
Copyright © 2011-2022 走看看