LibreOJ #113. 最大异或和

二次联通门 : LibreOJ #113. 最大异或和

 

 

 

/*
    LibreOJ #113. 最大异或和
    
    线性基
     
    插入 与 查询最大值
    
    说一下我在学习线性基时遇到的一些问题
    
    1.线性基指的是一个数集
    2.。。。没了。
    
    一开始反复看了好几遍,不知道线性基是个什么东西
    后来突然明白是个数集而不是个操作什么的。。 
    
    突然不能用printf了。。。用printf输出就是负数。。
    只能用cout了。。 
*/
#include <iostream>
#include <cstring>
#include <cstdio>

inline void read (long long &now)
{
    register char word = getchar ();
    bool temp = false;
    for (now = 0; word < '0' || word > '9'; word = getchar ())
        if (word == '-')
            temp = true;
    for (; word >= '0' && word <= '9'; now = now * 10 + word - '0', word = getchar ());
    if (temp)
        now = -now;
}


class Linear_Base_Type
{
    
    static const int _L = 62;
    
    private :
        
        long long number[_L | 1];
        
    public :
        
        inline bool Insert (register long long key)
        {
            for (register int i = _L; i >= 0; i --)
                if (key & (1LL << i))
                {
                    if (!number[i])
                    {
                        number[i] = key;
                        break;
                    }
                    key ^= number[i];
                }
            return key > 0;
        }
        
        long long Query_Maxn ()
        {
            long long res = 0;
            
            for (register int i = _L; i >= 0; i --)
                res = ((res ^ number[i]) > res) ? (res ^ number[i]) : res;
                
            return res;
        }
};

Linear_Base_Type Make;

int main (int argc, char *argv[])
{
    long long N;
    read (N);
    long long x;
    
    for (register int i = 1; i <= N; i ++)
    {
        read (x);
        
        Make.Insert (x); 
    }
    std :: ios :: sync_with_stdio (false);
    std :: cout << Make.Query_Maxn ();
    
    return 0;
}

 

转载于:https://www.cnblogs.com/ZlycerQan/p/7223559.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
校园悬赏任务平台对字典管理、论坛管理、任务资讯任务资讯公告管理、接取用户管理、任务管理、任务咨询管理、任务收藏管理、任务评价管理、任务订单管理、发布用户管理、管理员管理等进行集中化处理。经过前面自己查阅的网络知识,加上自己在学校课堂上学习的知识,决定开发系统选择小程序模式这种高效率的模式完成系统功能开发。这种模式让操作员基于浏览器的方式进行网站访问,采用的主流的Java语言这种面向对象的语言进行校园悬赏任务平台程序的开发,在数据库的选择上面,选择功能强大的Mysql数据库进行数据的存放操作。校园悬赏任务平台的开发让用户查看任务信息变得容易,让管理员高效管理任务信息。 校园悬赏任务平台具有管理员角色,用户角色,这几个操作权限。 校园悬赏任务平台针对管理员设置的功能有:添加并管理各种类型信息,管理用户账户信息,管理任务信息,管理任务资讯公告信息等内容。 校园悬赏任务平台针对用户设置的功能有:查看并修改个人信息,查看任务信息,查看任务资讯公告信息等内容。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这二者数据之后,管理员就可以进入系统后台功能操作区。项目管理页面提供的功能操作有:查看任务,删除任务操作,新增任务操作,修改任务操作。任务资讯公告信息管理页面提供的功能操作有:新增任务资讯公告,修改任务资讯公告,删除任务资讯公告操作。任务资讯公告类型管理页面显示所有任务资讯公告类型,在此页面既可以让管理员添加新的任务资讯公告信息类型,也能对已有的任务资讯公告类型信息执行编辑更新,失效的任务资讯公告类型信息也能让管理员快速删除。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值