sgu275 线性基模板题
来源:互联网 发布:网络直播社会现象 编辑:程序博客网 时间:2024/06/01 08:09
高斯消元求线性基,
#include <bits/stdc++.h>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 55inline ll read(){ ll x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar(); return x*f;}int n;ll a[N],p[62],ans=0;inline void getbasic(){ for(int i=1;i<=n;++i) for(int j=60;j>=0;--j){ if(!(a[i]>>j)) continue;//对线性基的这一位没贡献 if(!p[j]){ p[j]=a[i]; for(int k=j-1;k>=0;--k) if(p[j]>>k&1) p[j]^=p[k]; for(int k=j+1;k<=60;++k) if(p[k]>>j&1) p[k]^=p[j]; break; }//选入线性基中 a[i]^=p[j]; }}int main(){// freopen("a.in","r",stdin); n=read();for(int i=1;i<=n;++i) a[i]=read(); getbasic(); for(int i=0;i<=60;++i) ans^=p[i];//贪心的全取。这样是对角矩阵。 printf("%lld\n",ans); return 0;}
或者这样写
#include <bits/stdc++.h>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 55inline ll read(){ ll x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar(); return x*f;}int n;ll a[N],p[62],ans=0;inline void getbasic(){ for(int i=1;i<=n;++i) for(int j=60;j>=0;--j){ if(!(a[i]>>j)) continue;//对线性基的这一位没贡献 if(!p[j]){p[j]=a[i];break;}//选入线性基中 a[i]^=p[j]; }}int main(){// freopen("a.in","r",stdin); n=read();for(int i=1;i<=n;++i) a[i]=read(); getbasic(); for(int i=60;i>=0;--i) if((ans^p[i])>ans) ans^=p[i];//这样做只是上三角矩阵,贪心时需要判断一下 printf("%lld\n",ans); return 0;}
阅读全文
0 0
- sgu275 线性基模板题
- 高斯消元&线性基模板
- [模板]线性基
- 线性基 模板 bzoj2460 【BeiJing2011】 元素
- 模板链式线性表
- 线性筛选素数模板
- 线性筛素数模板
- 线性筛模板
- 线性筛模板
- 线性筛模板
- 线性素数筛模板
- 【模板】线性筛素数
- [模板]线性筛素数
- 【模板】线性筛素数
- luogu3383 线性筛模板
- 线性筛素数模板
- Loj-110乘法逆元(线性模板题)
- 模板线性栈和队列
- sql内外链接,交叉连接
- HDU
- linux下mysql的安装(二进制源码)
- java程序员从笨鸟到菜鸟之(三十八)IO流之装饰器模式初探
- CodeForces 669D Little Artem and Dance(思维)
- sgu275 线性基模板题
- 使用PLSQL Developer中的ODBC导入器将Excel表导入Oracle数据库
- C++必知必会——读书笔记(2)
- win7下配置opencv+qt出了问题
- 多维数组
- CF895C:C. Square Subsets(状压dp)
- Object-hashCode
- GitLab关闭用户注册功能
- python:8:文件的输入与输出