首页 > 其他分享 >线性基(异或)

线性基(异或)

时间:2023-08-06 21:23:54浏览次数:37  
标签:基中 int 异或 线性相关 线性 向量

线性基

目录
注:常用于异或

定义:

线性相关和线性无关

平面向量基本定理:平面上两个不共线向量可以表示出该平面上任意一个向量
这个定理可以拓展到n维
有了这个,就能轻松理解下面的概念了。
线性相关:假设我有k个向量,如果这k个向量中,任意一个向量能被其他向量表示出来,那么就线性相关。
线性无关:k个向量中,任意一个无法用其他的来表示,那么就线性无关。、

基:在V中找一个最大的线性无关向量组,其大小称为V的维数,记作dimV。这组向量也叫做V的一组基。
换句话说,利用一个基中的向量,可以表示出V中的任意向量

线性基的维护

基本操作

相当于动态地维护行(简化)阶梯形矩阵
维护的时候想象向量组排成一个阶梯矩阵
核心是每一个位都关联一个向量,这个向量的最高位恰好是该位
比方说现在插入一个向量x,先看最高位是否在已有的线性基中出现过,如果出现过一个y,x和y有相同的最高位,
那么x^=y,x的最高位就变低了,继续在线性基中找,直到找不到有相同的最高位,
那么让x的最高位和x关联,如果x被异或到0了就说明x能被线性基中的元素线性表出

在线段树分治中的维护

线性基不好删除,对于只能加不能删的我们可以考虑如何撤销(也好撤销),然后线段树分治

线性基的应用(代码模板在此)

https://www.luogu.com.cn/problem/P3812

分析:

最大异或和,给定一个集合,找一个子集使得异或和最大
把数写成二进制,拆成向量
异或相当于mod2加法,维护模2意义下的线性基
从高位起,依次考虑线性基(阶梯矩阵)的每一个分量,若异或上能让答案更大就异或上。

代码:

注释:代码里面的cmp其实并不需要

#include<bits/stdc++.h>
#define int long long
using namespace std;
int p[64];
int a[105];
bool cmp(int x,int y){
	return x>y;
}
void insert(int x){
	for(int i=61;i>=0;i--){
		if(((1<<i)>x)||(!(x>>i))){
			continue;
		}
		if(!p[i]){
			p[i]=x;
			break;
		}
		x^=p[i];
	}
}
signed main(){
	ios::sync_with_stdio(false);
	int n;
	cin >> n;
	for(int i=1;i<=n;i++){
		cin >> a[i];
	}
	sort(a+1,a+1+n,cmp);
	for(int i=1;i<=n;i++){
		insert(a[i]);
	}
	int ans = 0;
  	for (int i = 61; ~i; --i) {
    	ans=max(ans, ans^p[i]);
  	}
  	cout<<ans;
  	return 0;
	
}


标签:基中,int,异或,线性相关,线性,向量
From: https://www.cnblogs.com/linghusama/p/17610071.html

相关文章

  • 线性基
    线性基用于解决异或相关的问题。如何构造线性基?设$p$为线性基的集合。插入一个数$x$时,枚举其最高位$i$,若$p_i$不存在,令$p_i=x$并退出,否则令$x=x:xor:p_x$。voidins(llx){ for(lli=SIZE-1;i>=0;i--) { if(!(x>>i))continue; if(!p......
  • 计算机中的逻辑运算(与、或、非、异或、同或、与非、或非)
    计算机中的逻辑运算(与、或、非、异或、同或、与非、或非)目录1.与(AND):"×"、"·"、"∧"2.或(OR):"+"、"∨"3.非(NOT):"¬"、"!"、"—"4.异或(XOR):"⊕"5.同或(XNOR):"⊙"6.与非(NAND)7.或非(NOR)计算机中的逻辑运算又被称作为“......
  • 6.数据分析(1) --描述性统计量和线性回归(1)
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • 凸优化8——线性规划、二次规划
    线性规划以及等价变换中科大-凸优化笔记(lec25)-等价变换_凸优化等价_及时行樂_的博客-CSDN博客二次规划QP 二次约束二次规划QCQP中科大-凸优化笔记(lec26)-二次规划_二次约束二次规划_及时行樂_的博客-CSDN博客引入了lasso回归和岭回归......
  • 算法工程师学习运筹学 笔记二 线性规划
    线性规划 框架图先放在这里图片由知乎@运筹说提供,原文链接:https://zhuanlan.zhihu.com/p/382644742  线性规划模型标准型 标准型如上目标函数求max;约束条件两端用“=”连结;右端常数项非负;所有决策变量非负。(如有决策变量没有约束,则把该变量拆成两个正数变量......
  • 关于回归的线性模型的讨论
    关于回归的线性模型的讨论1.回归线性模型综述这篇文章我们来讨论回归问题。回归问题的目标是在给定D维输入(input)变量x的情况下,预测一个或者多个连续目标(target)变量t的值。典型的回归问题的例子是:多项式曲线拟合问题。多项式是被称为线性回归模型的一......
  • 记一次JavaScript异或算法加密 , 异或加密
     公司业务代码constBase64=require('base-64')functionxorEncrypt(str,key){letresultconstlist=[]for(leti=0;i<str.length;i++){constcharCode=str.charCodeAt(i)^key.charCodeAt(i%key.length)list.push(String.......
  • 线性代数
    线性代数前言:最近咕咕咕了好久了,1是因为换了教室,2是因为很多题在做,没时间,3则是因为上了线性代数。目录线性代数前言:矩阵矩阵的基本运算特殊矩阵矩阵运算的应用矩阵加速dp前提:矩阵快速幂加速线性dp广义矩阵运算矩阵应用的一些总结(主要是思路上)高斯消元(矩阵基础上)整数域使用(当然......
  • 非线性混合效应 NLME模型对抗哮喘药物茶碱动力学研究|附代码数据
    茶碱数据文件报告来自抗哮喘药物茶碱动力学研究的数据。给12名受试者口服茶碱,然后在接下来的25小时内在11个时间点测量血清浓度 代码数据******** ) 。head(thdat)复制代码此处,时间是从抽取样品时开始给药的时间(h),浓度是测得的茶碱浓度(mg/L),体重是受试者的体重(kg)。12名受......
  • 【数据结构 | 入门】线性表与链表 (问题引入&实现&算法优化)
    ......