N个数选任意个使得异或和最大(高斯消元)
来源:互联网 发布:.net 域名发布网站 编辑:程序博客网 时间:2024/06/05 09:45
#include <bits/stdc++.h>using namespace std;typedef long long LL;typedef unsigned long long ULL;const LL INF = 1E9+9;const int maxn = 1e5+6;/*求在XOR数组里面选任意多的元素的异或和最大*/LL XOR[maxn];LL base[65];LL guass(int n){/* 假设: n==5 LL XOR[5]={15,10,9,7,3}; 15: 1 1 1 1 10: 1 0 1 0 9: 1 0 0 1 7: 0 1 1 1 3: 0 0 1 1*/memset(base,0,sizeof(base));for(int i=0;i<n;i++){LL cur=XOR[i];for(int j=59;j>=0;j--){if((1ll<<j)&cur){if(base[j]==0){base[j]=cur;break;}else{cur^=base[j];}}}}/*转化成上三角矩阵 : 1 1 1 10 1 0 10 0 1 10 0 0 1*/LL ret=0;for(int i=0;i<60;i++)for(int j=i+1;j<60;j++)if((base[j]>>i)&1)base[j]^=base[i];/*进一步消元得: 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1*/for(int i=59;i>=0;i--)ret^=base[i];return ret;}int main(){int n;while(cin>>n){for(int i=0;i<n;i++)cin>>XOR[i];guass(n);}return 0;}
0 0
- N个数选任意个使得异或和最大(高斯消元)
- hunnu10701(在n个点中选三个点,使得构成的面积最大)
- uva10905连接n个数字,使得连成的数字最大
- n个数找最大的2个
- 对于1个正整数N,将其拆分成几个正整数的和,如何拆分可使得其乘积最大?
- 求M个数中前N个最大数(M>N)
- 给一个正整数 n, 找到若干个完全平方数(比如1, 4, 9, ... )使得他们的和等于 n。你需要让平方数的个数最少。
- 给一个正整数 n, 找到若干个完全平方数(比如1, 4, 9, ... )使得他们的和等于 n。你需要让平方数的个数最少。
- hdu 1024 DP 求n个数m个不交叉子段的最大和
- UVA714给出n个数分成m个部分,使和最大的最小
- n个整数中找出连续m个数加和是最大Python版
- n个整数中找出连续m个数加和是最大Java版
- LA2965侏罗纪(异或和为0的最大数字个数)
- N个数中选出最大(小)的n个数
- n个数连接得到最小或最大的多位整数(携程)
- python topN 取 最大的N个数 或 最小的N个数
- 在一个n个数的数组中(n很大),找出前i个中的最大或最少的数
- 选择问题(求N个数中第k个最大者)
- TPS相机及相机遮挡的一些处理方法
- SQL Server判断对象是否存在 (if exists (select * from sysobjects )(转)
- at android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:)
- POJ-2498
- MTK Android Driver知识大全
- N个数选任意个使得异或和最大(高斯消元)
- mtk lcd调试
- Linux 远程管理工具(WinSCP)
- Python 元组(Tuple)操作详解
- Docker源码分析(一):Docker架构
- Action class [userAction] not found - action - file:/D:/tomcat-6.0.29/webapps/SS
- grep查找时,去掉grep本身那一条
- 视频m3u8文件转ts视频,vb.net源码(各小段视频下载合并)
- EasyUI学习笔记_3