zoukankan      html  css  js  c++  java
  • 模板—数学—线性基

    模板—数学—线性基

    Code(高斯消元版):

    #include <cstdio>
    #include <algorithm>
    using namespace std;
    #define N 1000010
    long long num[N],place[N],ans; int n; bool v[N];
    int main()
    {
    	scanf("%d",&n);
    	for(int i=1;i<=n;i++) scanf("%lld",&num[i]);
    	for(int j=63;~j;j--)
    	{
    		int p=0;
    		for(int i=1;(!p)&&i<=n;i++)
    			if((!v[i])&&((num[i]>>j)&1ll)) p=i;
    		if(!p) {place[j]=0;continue;}
    		v[p]=true,place[j]=num[p];
    		for(int i=1;i<=n;i++) if(i!=p&&((num[i]>>j)&1ll))
    			num[i]^=num[p];
    	}
    	for(int i=63;~i;i--) ans=max(ans,ans^place[i]);
    	printf("%lld
    ",ans);
    }
    

    Code(普通版):

    #include <cstdio>
    #include <algorithm>
    using namespace std;
    long long place[100],x,ans; int n;
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            scanf("%lld",&x);
            for(int j=63;~j;j--) if((x>>(j*1ll))&1ll)
            {
                if(!place[j]) {place[j]=x;break;}
                else x^=place[j];
            }
        }
        for(int i=63;~i;i--) if(ans<(ans^place[i])) ans^=place[i];
        printf("%lld
    ",ans);
    }
    

      

  • 相关阅读:
    斐波那契数列的递归和非递归实现
    二叉树遍历
    基础总结
    内部类
    I/O dempo
    读取文件注意事项
    eclipse 主题设置
    String 常用函数
    多态的理解
    ffmpeg处理RTMP流媒体的命令大全
  • 原文地址:https://www.cnblogs.com/yangsongyi/p/10657021.html
Copyright © 2011-2022 走看看