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

    一开始以为是异或高斯消元,实际上是简单线性基。

    直接往线性基里插入,直到线性基满了就解出来了。

    // luogu-judger-enable-o2
    #include<bits/stdc++.h>
    #define il inline
    #define vd void
    typedef long long ll;
    il int gi(){
        int x=0,f=1;
        char ch=getchar();
        while(!isdigit(ch)){
            if(ch=='-')f=-1;
            ch=getchar();
        }
        while(isdigit(ch))x=x*10+ch-'0',ch=getchar();
        return x*f;
    }
    std::bitset<1001>f[1001],s;
    char S[1010],y[1010];
    bool ans[1010];
    int main(){
    #ifndef ONLINE_JUDGE
        freopen("2309.in","r",stdin);
        freopen("2309.out","w",stdout);
    #endif
        int n=gi(),m=gi(),tot=0;
        for(int yyb=1;yyb<=m;++yyb){
            scanf("%s",S+1);
            for(int i=1;i<=n;++i)s[i]=S[i]=='1';
            s[0]=gi();
            for(int i=s._Find_next(0);i<=n;i=s._Find_next(i)){
                if(!y[i]){
                    y[i]=1,f[i]=s;++tot;
                    if(tot==n){
                        for(int i=n;i;--i){
                            ans[i]=f[i][0];
                            for(int j=f[i]._Find_next(i);j<=n;j=f[i]._Find_next(j))
                                ans[i]^=ans[j];
                        }
                        printf("%d
    ",yyb);
                        for(int i=1;i<=n;++i)puts(ans[i]?"?y7M#":"Earth");
                        return 0;
                    }
                    break;
                }else s^=f[i];
            }
        }
        puts("Cannot Determine");
        return 0;
    }
    
  • 相关阅读:
    Codeforces Round #609 (Div. 1)
    Codeforces Round #607 (Div. 1)
    Codeforces Round #604 (Div. 1)
    网络流应用
    javaScript遍历数组总结
    JavaScript遍历对象的常见方法
    JS中的可枚举属性与不可枚举属性
    typeScript泛型
    ts中函数重载声明
    ts中的可选参数
  • 原文地址:https://www.cnblogs.com/xzz_233/p/9815868.html
Copyright © 2011-2022 走看看