首页 > 其他分享 >学习线性基相关

学习线性基相关

时间:2023-07-20 14:55:40浏览次数:29  
标签:重构 int tot 学习 -- 异或 线性 相关

在线性空间中,线性基是一组线性无关的向量组,且在其所在的向量空间中是一个极大线性无关向量组

我们在算法里,可以看作是若干个数的集合

在一个序列中,取其线性基中的任意几个数,可以得到原来序列的任何一个数

线性基中的数都是唯一的

如何构造线性基

贪心的方法

从高位往低位扫,设a[x]为第x位上是1的数,当前要加入的数为p

如果a[x]不存在,则p加入到该位上

如果a[x]存在,则p需异或一遍a[x],使得p的第x位不是1

从高位往低位扫,可以保证它是类似阶梯型的

void insert(int x)
{
	for(int i=63;i>=0;i--)
	{
		if(!(x>>i))continue;
		if(!p[i])
		{
			p[i]=x;
			break;
		}
		x^=p[i];
	}
}

重构线性基

重构线性基的目的在于查找第k小的异或和

我们依次给第i位的i-1到0异或上对应的a,则可以得到1,10,100,这样子方便我们获得第k小的异或和

但是注意了,这种重构后的线性基无法通过异或获得0,所以如果原来的异或和可以得到0,则需特判一下

void rebuild()
{
	tot=0;
	for(int i=0;i<=63;i++)
	{
		for(int j=i-1;j>=0;j--)
		{
			if((p[i]>>j)&1)p[i]^=p[j];
		}
		if(p[i])d[tot++]=p[i];
	}
}

int get_min(int k)
{
	if(tot!=n)k--;//去掉异或出来是0的情况
	if(k>=(1<<tot))return -1;
	int res=0;
	for(int i=0;i<tot;i++)if((k>>i)&1)res^=d[i];
	return res;
}

标签:重构,int,tot,学习,--,异或,线性,相关
From: https://www.cnblogs.com/HikariFears/p/17568417.html

相关文章

  • Spring + SpringMVC + SpringBoot + MyBatis 相关注解
    创建对象的:@Controller:放在类的上面,创建控制器对象,注入到容器中@RestController:放在类的上面,创建控制器对象,注入到容器中。作用:复合注解是@Controller,@ResponseBody,使用这个注解类的,里面的控制器方法的返回值都是数据@Service:放......
  • Mysql学习笔记(一)
    一、基础概念1.术语数据库(DB)数据库管理系统(DBMS)SQL(StructuredQueryLanguage)2.关系型数据库(二维表)二、SQL1.分类DDL(DataDefinitionLanguage)数据定义语言(操作数据库、表、字段)DML(DataManipulationLanguage)数据操作语言(增删改)DQL(DataQueryLanguage)......
  • FedR代码的学习
    wwcnt_mat=sparse.csr_matrix((dat_values,(row_indxs,col_indxs)))这句代码创建了一个稀疏矩阵(sparsematrix)wwcnt_mat,其中dat_values是矩阵中非零元素的值,而(row_indxs,col_indxs)是对应的非零元素所在的行和列的索引。具体地说,sparse.csr_matrix((dat_values,(ro......
  • 行行AI人才直播第11期:墨尔本大学数据科学高级讲师-宫明明《机器学习:从统计到因果,人工
    行行AI人才是博客园和顺顺智慧共同运营的AI行业人才全生命周期服务平台。马克斯·普朗克智能系统中心主任曾在国际数学家大会进行了题为FromStatisticaltoCausalLearning的报告,建立和理解人工智能系统的基本研究思路:从通过统计学习的符号方法到依靠因果关系概念的干预模......
  • JavaScript学习 -- Promise的使用
    在JavaScript中,Promise是一种用于处理异步操作的对象。它表示某个异步操作的最终完成或失败,并提供了一种优雅的方式来处理异步操作的结果。本文将介绍JavaScript如何使用Promise,并提供一个实际的例子。什么是PromisePromise是一种异步操作的解决方案,它有三种状态:pending(等待)、re......
  • 阅读 | 《费曼学习法》读书笔记 | 2023年7月20日
    小虾米原创作品,转载请注明出处:https://www.cnblogs.com/shrimp-can/p/17567931.html 你是否花了很多时间精力学习,效果却始终不好?你是否学习了很多知识,但是当需要表述或写作的时候就像“茶壶里倒饺子,倒不出来”?你是否按步就班的学习,但是学了之后就忘了? 这都是因为没有掌握......
  • 一文带你了解KET/PET英语学习
    https://zhuanlan.zhihu.com/p/80996894一文带你了解KET/PET英语学习这几年来,剑桥英语考试KET/PET越来越受关注。但这传说中的KET/PET到底是什么,考什么内容?可能很多父母还不清楚,今天小编就带你深入了解一下KET和PET。什么是剑桥MSE?想要了解KET和PET,我们首先来了解一下剑桥通用......
  • Sass学习笔记
    一、安装Sass使用如下命令安装npminstallsass-D-D表示安装到开发环境下,因为生产环境不需要。二、语法规则1、使用变量Sass使用$符号来标识变量,可以把反复使用的css属性值定义成变量,然后通过变量名来引用它们,而无需重复书写这一属性值。<stylescopedlang="scss">$color:red;......
  • 深度学习 -- 系列文章
    深度学习(八)——神经网络:卷积层深度学习(七)——神经网络的卷积操作深度学习(六)——神经网络的基本骨架:nn.Module的使用深度学习(五)——DatadLoader的使用深度学习(四)——torchvision中数据集的使用深度学习(三)——Transforms的使用深度学习(二)——TensorBoard的使用深......
  • 线性代数
    7/19[ABC189E]RotateandFlip题意:给定在二维平面上的一些点,给定\(m\)次操作,为顺时针转$\frac{\pi}{2}$,逆时针旋转$\frac{\pi}{2}$,以某某对称轴对称,每次询问在\(x\)次操作后的某个点的坐标。\(n,m,q\le2\times10^{5}\)由于每个操作是整体操作,所以我们存下整......