zoukankan      html  css  js  c++  java
  • Luogu P2447 [SDOI2010]外星千足虫 高斯消元

    链接

    给出的条件是异或类型的方程,可以直接用bitset优化高斯消元。

    至于求K,在高斯消元时记录用到的最大的方程的编号即可。

    代码:

     1 // luogu-judger-enable-o2
     2 #include<bits/stdc++.h>
     3 using namespace std;
     4 #define N 1007
     5 #define M 2007
     6 char s[N];
     7 bitset<N> b[M];
     8 int n,m;
     9 int main()
    10 {
    11     int i,j;
    12     scanf("%d%d",&n,&m);
    13     for(i=1;i<=m;i++)
    14     {
    15         scanf("%s",s+1);
    16         for(j=1;j<=n;j++)
    17             b[i][j]=s[j]-'0';
    18         scanf("%s",s);
    19         b[i][n+1]=s[0]-'0';
    20     }
    21     int ans=0;
    22     for(i=1;i<=n;i++)
    23     {
    24         for(j=i;j<=m&&!b[j][i];j++);
    25         if(j>m)break;
    26         ans=max(ans,j);
    27         swap(b[j],b[i]);
    28         for(j=1;j<=m;j++)
    29             if(i!=j&&b[j][i])b[j]^=b[i];
    30     }
    31     if(i<=n)printf("Cannot Determine
    ");
    32     else
    33     {
    34         printf("%d
    ",ans);
    35         for(i=1;i<=n;i++)
    36         {
    37             if(b[i][n+1])printf("?y7M#
    ");
    38             else printf("Earth
    ");
    39         }
    40     }
    41     return 0;
    42 }
  • 相关阅读:
    3.3 直方图处理与函数绘图
    光头强
    考试代码模板
    【2015初赛】预备
    NOIP2018 模拟题
    NOIP2017 模拟赛
    【解题报告】树形DP入门
    【解题报告】区间DP
    【解题报告】树形背包
    二分刷题单
  • 原文地址:https://www.cnblogs.com/lishuyu2003/p/11241031.html
Copyright © 2011-2022 走看看