题目:异或森林(蓝桥OJ 3400)

news2024/9/28 3:18:47

问题描述:


解题思路:

        一个数也可以看作是一段区间,当该区间的异或和为完全平方数时则符合题意。

        我们需要注意枚举的完全平方的上限。

        异或前缀和减小时间复杂度。


题解:

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 1e4 + 9;

int a[N],cnt[N << 2];  // cnt要开大点,因为cnt[(j * j) ^ a[i]]给j*j开的范围是n << 1, 所以(n << 1) ^ a[i]时,为了保证上限不溢出再往左一位,n << 1 << 1 == n << 2

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 >> a[i];


  for(int i = 1; i <= n; i++)  // 异或前缀和
  {
    a[i] = a[i] ^ a[i - 1];
  }

  ll ans = 0;
  cnt[0]++;  // 前缀和0和i位置的异或值代表原数组1~i的异或值,子数组只有一个数的情况也算进去 
  for(int i = 1; i <= n; i++)
  {
   
    for(int j = 0; j * j <= n << 1; j++)  // n<<1是因为数组二进制异或最大不会超过n位,让n左移一位开大点无妨 
    {
      ans += cnt[(j * j) ^ a[i]];
    // 枚举全部完全平方,0~i位置异或结果为完全平方数加入 
    }
    cnt[a[i]]++;  // 为了防止混乱,没枚举到的i位置默认没有,计数为0 (每次遍历的区间上限为i) 

  }
	
  cout << (n*(n + 1))/2 - ans << '\n';
  return 0;
}

知识点:异或

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1538679.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MATLAB中的数学建模:基础知识、实例与方法论

前言 在当今科技高速发展的时代&#xff0c;数学建模成为了解析复杂世界的关键工具&#xff0c;而MATLAB作为一种专业的科学计算软件&#xff0c;为我们提供了强大的数学建模平台。MATLAB不仅仅是Matrix Laboratory的简称&#xff0c;更是一个集数值分析、矩阵计算、算法开发和…

如何做好软件架构

最近学习了Udemy的一个软件架构课程&#xff0c;在此做一个记录和分享。 总的来说&#xff0c;软件架构是基于实际业务需求&#xff0c;无法为实际业务服务&#xff0c;再花哨的软件架构都无法产生任何价值。 当需求到来&#xff0c;我们需要分以下几个大致步骤进行分析和拆解…

【项目设计】仿 muduo 库实现 OneThreadOneEventLoop 式并发服务器

文章目录 一、项目介绍1. 项目简介2. 开发环境3. 核心技术4. 开发阶段 二、前置知识了解1. reactor2. timerfd3. timerwheel4. eventfd5. regex6. any 三、框架设计1. 项目模块划分1.1 SERVER 模块1.2 协议模块 2. 项目模块关系图2.1 Connection 模块关系图2.2 Acceptor 模块关…

抖音视频关键词批量采集工具|视频无水印爬虫下载软件

抖音视频关键词批量采集工具&#xff1a; 最新推出的抖音视频关键词批量采集工具&#xff0c;为您提供一种便捷的方式通过关键词搜索和提取符合条件的视频内容。以下是详细的操作说明和功能解析&#xff1a; 操作说明&#xff1a; 进入软件后&#xff0c;在第一个选项卡页面…

Linux centos7安装nginx-1.24.0并且实现自启动

1.安装之前的操作 ps -ef|grep nginx 查看是否有运行 如果有就杀掉 kill -9 pid find / -name nginx 查看nginx文件 rm -rf file /usr/local/nginx* 通通删掉删掉 yum remove nginx 限载一下服务 1.2.下载安装包 地址 nginx: download 2.减压文件 tar…

shell常用通配符

目录 介绍 示例 * ? [a,b,...] / [ab...] [^a,b,...] / [^ab...] [x1-x2] {"xxx","xxx","xxx",...} {x1..x2} 介绍 示例 * 匹配0或多个字符 ls的-d选项可以只列出当前目录下的文件,而不会列出他们包含的内容: ? 只匹配任意一个字符 …

JAVA_Tomcat

Tomcat 使用教程 1.下载: http://tomcat.apache.org/ 2.安装: 解压压缩包(安装目录不要有中文) 3.卸载: 删除目录即可 4.启动: 运行./bin/startup.sh1.黑窗口一闪而过: 没有配置好JDK环境变量2.启动报错(查看日志文件): 端口占用 5.关闭: 1.强制关闭: 点击窗口关闭按钮2.正常…

Vue3 大量赋值导致reactive响应丢失问题

问题阐述 如上图所示&#xff0c;我定义了响应式对象arrreactive({data:[]})&#xff0c;尝试将indexedDB两千条数据一口气赋值给arr.data。但事与愿违&#xff0c;页面上的{{}}在展示先前数组的三秒后变为空。 问题探究 vue3的响应应该与console.log有异曲同工之妙&#xff0…

js教程(8)

一、事件流 1.概述 在JavaScript中&#xff0c;事件流描述的是事件在DOM结构中传播和被处理的顺序。事件流分为冒泡阶段和捕获阶段。 冒泡阶段&#xff08;Bubbling Phase&#xff09;&#xff1a;事件首先从最内层的元素开始向父级元素传播&#xff0c;一直传播到最外层的元素…

分布式Raft原理详解,从不同角色视角分析相关状态

分布式Raft原理详解&#xff0c;从不同角色视角分析相关状态 1. CAP定理2.Raft 要解决的问题3. Raft的核心逻辑3.1. Raft的核心逻辑2.1. 复制状态机2.2. 任期 Term2.3. 任期的意义&#xff1a;逻辑时钟2.4 选举定时器 3. Leader选举逻辑4. 从节点视角查看Leader选举4.1. Follow…

备考ICA----Istio实验7---故障注入 Fault Injection 实验

备考ICA----Istio实验7—故障注入 Fault Injection 实验 Istio 的故障注入用于模拟应用程序中的故障现象&#xff0c;以测试应用程序的故障恢复能力。故障注入有两种: 1.delay延迟注入 2.abort中止注入 1. 环境准备 kubectl apply -f istio/samples/bookinfo/platform/kube/…

计算机二级总结

1.结构体改值&#xff1a; ②第二套1 对形参b所指结构体的数据进行修改 1.结构体传参传地址&结构体 2.在函数里用->,在main里用.&#xff0c;数组用. ②第五套1 对形参b所指结构体的数据进行修改 返回指针变量的地址&#xff0c;不用取*&#xff0c;所以用struct stud…

唯众物联网安装调试员实训平台物联网一体化教学实训室项目交付山东技师学院

近日&#xff0c;山东技师学院物联网安装调试员实训平台及物联网一体化教学实训室采购项目已顺利完成交付并投入使用&#xff0c;标志着学院在物联网技术教学与实践应用方面迈出了坚实的一步。 山东技师学院作为国内知名的技师培养摇篮&#xff0c;一直以来致力于为社会培养高…

二叉树的层次遍历经典问题-算法通关村

二叉树的层次遍历经典问题-算法通关村 1 层次遍历简介 广度优先在面试里出现的频率非常高&#xff0c;整体属于简单题。广度优先又叫层次遍历&#xff0c;基本过程如下&#xff1a; 层次遍历就是从根节点开始&#xff0c;先访问根节点下面一层全部元素&#xff0c;再访问之后…

阿里云OSS分布式存储

目录 &#x1f9c2;1.OSS开通 &#x1f32d;2.头像上传整合OSS &#x1f68d;2.1.引入依赖 &#x1f68d;2.2添加配置 &#x1f68d;2.3创建配置类 &#x1f68d;2.4添加实现类 &#x1f68d;2.5controller调用接口 &#x1f68d;2.6postman测试 1.OSS开通 1.登…

Apache James数据库存储用户信息的密码加密问题

项目场景 Apache James邮件服务器使用数据库来存储用户信息的密码加密问题&#xff1a; 将James的用户改为数据库存储James密码是如何加密验证的 1.将James的用户改为数据库存储 1、修改存储方式 找到james-2.3.2\apps\james\SAR-INF\config.xml 找到<users-store>标…

能被整除的数

给定一个整数 n 和 m个不同的质数 p1,p2,…,pm。 请你求出 1∼n中能被 p1,p2,…,pm 中的至少一个数整除的整数有多少个。 输入格式 第一行包含整数 n 和 m。 第二行包含 m 个质数。 输出格式 输出一个整数&#xff0c;表示满足条件的整数的个数。 数据范围 1≤n≤10^5 …

30V转5V 1A 30降压12V 1A DCDC低电压恒压IC 车充芯片-H4110

30V转5V和30V转12V的DCDC低电压恒压IC&#xff08;也称为降压恒压芯片或车充芯片&#xff09;工作原理如下&#xff1a; 输入电压识别&#xff1a;芯片首先识别输入的30V电压&#xff0c;并准备进行转换。 PWM控制&#xff1a;芯片内部的控制逻辑生成PWM信号。这个信号用于控制…

6个免费的ChatGPT网站

AI 大模型的出现给时代带来了深远的影响&#xff1a; 改变了产业格局&#xff1a;AI 大模型的发展推动了人工智能技术在各行业的广泛应用&#xff0c;改变了传统产业的运作方式&#xff0c;促进了新兴产业的崛起&#xff0c;如智能驾驶、医疗健康、金融科技等。提升了科学研究…

2024-3-22-Qtday3作业

1> 思维导图 2> 要求&#xff1a; 使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否…