异或线性基
异或线性基 一、问题背景:为什么要引入“线性基”? 在算法竞赛中,常见的问题之一是: 给定一个数组 a1,a2,…,ana_1,a_2,\dots,a_na1,a2,…,an,考虑所有子集的异或和(即⊕),你可能需要: 求出所有子集异或和中的最大值; 判断某个数是否能由这些元素的异或组合得到; 求第 kkk 大的异或和; 维护动态插入、删除并查询异或值。 如果直接枚举所有子集,时间复杂度是 O(2n)O(2^n)O(2n),显然不可行。 于是引入 线性基(Xor Basis / Linear Basis) 来高效解决。 二、异或与线性独立 我们把每个数看作一个二进制向量。 异或操作相当于向量空间里的“加法(模 2)”。 一组数的子集异或和,正好对应了这组向量的 线性组合。 于是问题转化为: 在二进制向量空间中,找到一个“基”来表示所有可能的组合。 这就是 线性基: 一组最小的、互相线性独立的向量; 能表示原集合中所有数的异或和。 三、线性基的构造 1. 核心思想 高斯消元的简化版:逐位考虑(从高位到低位),尽量把每个数的最高位独立出来。 2....
C++中Vector的使用方法
C++中vector的使用方法 一、定义以及初始化 vector<int> a(n); 创建一个长度为n的int型数组,所有元素默认初始化为0 等价于: vector<int> a(n,0); 也可以指定初始值: vector<int> a(5,7); // a = {7, 7, 7, 7, 7} 二、一维vector的常用操作 1. 增加元素 a.push_back(10); 2.删除末尾元素 a.pop_back(); 3.访问元素 int x = a[2]; // 下标访问,不越界时最快int y = a.at(2); // 安全访问,越界会抛异常 4.遍历数组 for (int i = 0; i < a.size(); i++) { cout << a[i] << " ";}for(int val : a){ cout << val << " ";} 5.求长度 int...
QQ大模型机器人
windows系统下使用astrbot与napcatQQ协议,构建QQ大模型机器人 参考文档:https://astrbot.app 下载安装器 打开 https://github.com/Soulter/AstrBotLauncher/releases/latest 下载 Source code (zip) 并解压到电脑。 运行安装器 双击launcher_astrbot_en.bat运行 复制本地链接在浏览器打开进入AstrBot管理面板 通过 NapCatQQ 协议实现端接入 QQ NapCatQQ 的文档:NapCatQQ 文档 参考内容:NapCat.Shell - Win手动启动教程 前往 NapCatQQ 的 release 页面 下载NapCat.Shell.zip解压 确保QQ版本安装且最新 双击目录下launcher.bat即可启动 如果是win10 则使用launcher-win10.bat 如果需要快速登录 将 QQ 号传入参数即可,新建fastlaunch.bat文件,写入以下代码 launcher.bat...
linux文件管理系统
linux文件管理系统 程序功能 文件复制:通过 cp <source file> <target file> 命令将一个文件复制到另一个位置。 文件删除:通过 rm <filename> 命令删除指定文件。 文件压缩:使用 compress <filename> <compressed package name> 命令将文件压缩成指定文件。 文件解压:使用 decompress <compressed package name> <target directory> 命令将压缩包解压到指定目录。 退出程序:使用exit命令退出当前程序。 项目关键和遇到的问题 如何将程序中输入的字符改写成linux系统命令的格式? 经过搜索和查阅资料,我选择了c语言中的snprintf函数,它可以方便地将若干字符串插入到固定字符串中组成新的字符串,格式是snprintf(str,...
常用linux命令行命令
Linux常用命令 +++ 1. 文件和目录操作 ls - 列出目录中的文件和文件夹 使用方法:ls [选项] [目标路径] 例: ls # 列出当前目录内容ls -l # 以详细信息格式显示ls -a # 显示包括隐藏文件 cd - 切换目录 使用方法:cd [目录路径] 例: cd /home/user # 转到指定路径cd .. # 转到上一级目录cd ~ # 转到用户主目录 pwd - 显示当前所在目录 使用方法:pwd mkdir - 创建新目录 使用方法:mkdir [选项] 目录名 例: mkdir new_folder # 创建一个名为new_folder的目录mkdir -p parent/child # 创建多级目录 rm - 删除文件或目录 使用方法:rm [选项] 文件/目录 例: rm file.txt # 删除单个文件rm -r folder #...
树状数组
树状数组 单点修改,区间查询 luogu P3347【模板】树状数组 1 int lowbit(int aa){ return aa&-aa;}void add(int xx,int aa){ for(int i=xx;i<=n;i+=lowbit(i)) t[i]+=aa;}int ask(int xx){ int now=0; for(int i=xx;i>0;i-=lowbit(i)) now+=t[i]; return now;}int main(){ cin>>n>>m; for(int i=1;i<=n;i++) { cin>>a[i]; add(i,a[i]); } for(int...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick Start Create a new post $ hexo new "My New Post" More info: Writing Run server $ hexo server More info: Server Generate static files $ hexo generate More info: Generating Gulp compression $ gulp Deploy to remote sites $ hexo deploy More info: Deployment Integrated instruction $ hexo...











