zoukankan      html  css  js  c++  java
  • 【模板】线性基

    题目描述

    给定n个整数(数字可能重复),求在这些数中选取任意个,使得他们的异或和最大。

    输入输出格式

    输入格式:

    第一行一个数n,表示元素个数

    接下来一行n个数

    输出格式:

    仅一行,表示答案。

    输入输出样例

    输入样例#1: 复制
    2
    1 1
    输出样例#1: 复制
    1

    说明

    1n50,0Si2^50

    #include<iostream>
    #include<algorithm>
    using namespace std;
    #define ll long long
    ll a[100010], b[70];
    ll n, ans=0;
    int main()
    {
    	cin >> n;
    	for (int i = 0; i < n; i++)
    		cin >> a[i];
    	for (int i = 0; i <n; i++)
    		for (int j = 62; j >= 0; j--)
    			if (1ll << j & a[i])
    				if (!b[j]) {
    					b[j] = a[i];
    					break;
    				}
    				else
    					a[i] ^= b[j];
    	for (int i = 62; i >= 0; i--)
    		ans = max(ans, ans^b[i]);
    	cout << ans << endl;
    	return 0;
    }
    //c++ max函数头文件是#include<algorithm>
    

      

  • 相关阅读:
    用 Sqlmap 识别 WAF
    OD 实验(九)
    跳转指令及其跳转条件
    Python
    Python 模块
    OD 实验(八)
    OD 实验(七)
    OD 实验(六)
    OD 实验(五)
    OD 实验(四)
  • 原文地址:https://www.cnblogs.com/52dxer/p/10353489.html
Copyright © 2011-2022 走看看