码迷,mamicode.com
首页 > 其他好文 > 详细

线性基板子

时间:2017-11-09 22:40:48      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:模板题   格式   reg   www.   描述   sha   重复   printf   new   

luogu P3812 【模板】线性基

题目背景

这是一道模板题。

题目描述

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

输入输出格式

输入格式:

 

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

接下来一行n个数

 

输出格式:

 

仅一行,表示答案。

 

输入输出样例

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

说明

1≤n50,0Si?250

链接:https://www.luogu.org/problemnew/show/3812

AC代码:

 

#include<cstdio>
#include<iostream>
#define BIG 133333
#define FOR(i,s,t) for(register int i=s;i<=t;++i)
typedef long long ll;
ll u,ans;
int n;
ll b[70];
int main(){
	scanf("%d",&n);
	while(n--){
		scanf("%lld",&u);
		for(register int i=60;~i;--i)
			if(u&(1ll<<i)){
				if(!b[i]){
					b[i]=u;
					break;
				}
				else u^=1ll*b[i];
			}
	}
	for(register int i=60;~i;--i)
		if((ans^b[i])>ans)ans^=b[i];
	printf("%lld\n",ans);
	return 0;
}

  

 

线性基板子

标签:模板题   格式   reg   www.   描述   sha   重复   printf   new   

原文地址:http://www.cnblogs.com/Stump/p/7811285.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!