C++课后习题训练记录Day154

1.练习项目 :

问题描述

卓儿有一个包含 n 个整数的数组,她想找到子数组中的最大异或和。

输入格式

第一行是一个整数 n,表示数组的大小。

接下来一行有 n 个整数 x1,x2,...,xn,表示数组的内容。

输出格式

输出一个整数,表示子数组中的最大异或和。

2.选择课程

在蓝桥云课中选择题库,选择题号17205并开始练习。

3.开始练习

(1)源码 :

#include<bits/stdc++.h>

using namespace std;

const int N=32*1e5+10,M=1e5+10;

int aM,prefixM;

int sonN2,tot=1;

void insert(int x)

{

int o=1;

for(int i=30;i>=0;i--){

int y=x>>i&1;

if(!sonoy)sonoy=++tot;

o=sonoy;

}

}

int query(int x)

{

int o=1,res=0;

for(int i=30;i>=0;i--){

int y=x>>i&1;

//若y==1则走0,若y==0则走1

if(sono!y)o=sono!y,res|=(1<<i);

else o=sonoy;

}

return res;

}

int main()

{

ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);

int n;cin>>n;

for(int i=1;i<=n;i++)cin>>ai;

for(int i=1;i<=n;i++)prefixi=prefixi-1^ai;

insert(0);

int ans=0;

for(int i=1;i<=n;i++){

ans=max(ans,query(prefixi));

insert(prefixi);

}

cout<<ans<<'\n';

return 0;

}

(2)检验结果

对此代码进行检验,检验后无报错,提交此代码,判题结果为正确100分。

(3)练习心得:注意每段代码末尾的分号是否存在,如不存在则需即使补充;输入法 是否切换 为英语模式;语法是否错误。

相关推荐
mCell5 小时前
Lua 编程入门:从基础语法到元表
javascript·算法·lua
wuyk5557 小时前
98.C语言易混难点:字符数组与字符串指针的底层差异
c语言·开发语言·c++·stm32·嵌入式硬件·算法
峥无7 小时前
从0到1手撕红黑树:封装实现 my_map 与 my_set(SGI-STL 源码级深度解析)
开发语言·c++·笔记·算法·stl
波特率1152008 小时前
C++新特性---属性说明符与标准属性
开发语言·c++
不会代码的小猴8 小时前
3. 控件学习1
开发语言·c++·笔记·qt·算法
疯狂打码的少年9 小时前
【数据结构】图的存储结构:邻接矩阵与邻接表
数据结构·笔记
203号居民10 小时前
LeetCode hot 100 —41. 缺失的第一个正数
数据结构·算法·leetcode
专注仿真12 小时前
问答大模型技术方案算法实现-熵权法融合算法 + 交叉编码器重排算法
人工智能·python·算法·语言模型·问答大模型关键算法·熵权融合算法·交叉编码器重排算法
烧酒同学13 小时前
【C++】记录size of std::vector的巧妙坑
开发语言·c++·图形渲染