当前位置: 首页 > ds >正文

普通消元求解线性基并求解最大异或和

#include <iostream>
#include <vector>

using namespace std;

// 定义线性基类
class LinearBasis {
public:
    long long basis[64]; // 存储线性基

    LinearBasis() {
        fill(basis, basis + 64, 0);
    }

    // 向线性基中插入一个数
    bool insert(long long x) {
        for(int i = 63; i >= 0; --i){
            if(!(x >> i)) continue;
            if(!basis[i]){
                basis[i] = x;
                return true;
            }
            x ^= basis[i];
        }
        return false;
    }

    // 获取最大异或和
    long long getMaxXorSum(){
        long long res = 0;
        for(int i = 63; i >= 0; --i){
            if((res ^ basis[i]) > res){
                res ^= basis[i];
            }
        }
        return res;
    }
};

int main(){
    vector<long long> nums = {1, 2, 3, 4}; // 输入数组
    LinearBasis lb;

    for(auto num : nums){
        lb.insert(num); // 将每个数插入线性基
    }

    cout << "Maximum XOR Sum: " << lb.getMaxXorSum() << endl; // 输出最大异或和

    return 0;
}

http://www.xdnf.cn/news/4141.html

相关文章:

  • 【论文笔记】SOTR: Segmenting Objects with Transformers
  • 机器人强化学习入门学习笔记
  • 有效的数独(中等)
  • Qt中数据结构使用自定义类————附带详细示例
  • 2025年企业Radius认证服务器市场深度调研:中小企业身份安全投入产出比最优解
  • Untiy基础学习(六)MonoBehaviour基类的简单介绍
  • 形式化数学——Lean求值表达式
  • 【数据治理】数据架构设计
  • 2962. 统计最大元素出现至少 K 次的子数组
  • 1. 设计哲学:让字面量“活”起来,提升表达力和安全性
  • java stream
  • Python训练打卡Day16
  • 【AI绘画】Ottohans Beier风格雕刻版画
  • 我的世界Minecraft游戏服务器搭建教程:腾讯云Java版
  • java CompletableFuture 异步编程工具用法1
  • 免费在线练字宝藏Z2H 免安装高效生成 vs 笔顺功能补缺
  • Docker 容器 - Dockerfile
  • 大模型微调Fine-tuning:从概念到实践的全面解析
  • #基础Machine Learning 算法(上)
  • 第三章 - 软件质量工程体系
  • 【codeforces 2070c】二分答案详解
  • PostgreSQL 的 pg_current_wal_lsn 函数
  • 15届蓝桥杯国赛 立定跳远
  • 红黑树和AVL树封装map和set的细节 以及 map的operator[]重载的底层
  • 从Rtos到Linux:学习的策略
  • 基于思考过程评价的心理问题咨询对话记性评估
  • Kotlin带接收者的Lambda介绍和应用(封装DialogFragment)
  • Guass数据库实验(数据字典设计、交叉表设计)
  • 基于MATLAB图像中的圆形目标识别和标记
  • DDR在PCB布局布线时的注意事项及设计要点