zoukankan      html  css  js  c++  java
  • bzoj1923[Sdoi2010]外星千足虫

    bzoj1923[Sdoi2010]外星千足虫

    题意:

    n只两种动物,一种有奇数只脚,另一种偶数只角。现在进行m次操作,每次告诉你若干只动物的脚数之和为奇数还是偶数。要求你输出所有动物的类型以及最少多少次操作就能判断。n≤1000,m≤10000

    题解:

    设放进去的动物的系数为1,没放的系数为0,脚数如果是奇数结果就为1,偶数结果为0,解异或方程,具体看代码。

    代码:

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <algorithm>
     4 #include <bitset>
     5 #define inc(i,j,k) for(int i=j;i<=k;i++)
     6 #define maxn 1010
     7 using namespace std;
     8 
     9 bitset <maxn> M[maxn*2]; int n,m,ans; char s[maxn];
    10 void gause(){
    11     int now=0,pos;
    12     inc(i,1,n){
    13         for(pos=now+1;pos<=m&&!M[pos][i];pos++); if(pos==m+1){ans=-1; return;}else ans=max(ans,pos);
    14         now++; swap(M[now],M[pos]); inc(j,1,m)if(j!=now&&M[j][i])M[j]^=M[now];
    15     }
    16 }
    17 int main(){
    18     scanf("%d%d",&n,&m);
    19     inc(i,1,m){scanf("%s",s+1); inc(j,1,n)M[i][j]=s[j]-'0'; int a; scanf("%d",&a); M[i][n+1]=a;}
    20     gause();
    21     if(ans==-1)printf("Cannot Determine");else{
    22         printf("%d
    ",ans); inc(i,1,n)printf(M[i][n+1]?"?y7M#
    ":"Earth
    ");
    23     }
    24     return 0;
    25 }

    20160616

  • 相关阅读:
    d3 之deal with data
    git 使用小结
    【nodemailer】之 work with mustache
    Mustache
    【nodemailer】 初试
    【计算机基础】二.组成1(总线、输入输出)
    【计算机基础】一.概述
    Sring事务管理
    【并发编程】4.JUC中常用的锁
    【并发编程】3.线程与线程池
  • 原文地址:https://www.cnblogs.com/YuanZiming/p/5779882.html
Copyright © 2011-2022 走看看