第二题 数列游戏

提交文件: sequence.cpp

输入文件: sequence.in

输出文件: sequence.out

时间空间限制: 1 秒, 256 MB

有一个长度为 \(n\) 的序列 \(a_1, \cdots , a_n\)。

如果序列的长度大于 1,那么你就能进行操作,每次操作可以选择两个相邻的数 \(a_i\), \(a_{i+1}\) 合并,得到一个新的数 \(ai ⊕ a_{i+1}\)(“\(⊕\)”表示异或),每次操作都会使序列的长度减少 1。例如对将序列 \([8, 3, 5, 7, 1]\) 中的第 2个和第 3 个数进行合并,会得到新序列 \([8, 6, 7, 1]\),并可以进行下一轮操作。

你需要进行若干次操作(可能是 \(0\) 次),使得最终序列任意子区间的异或和不为 0。子区间的定义为连续的一段数 \([a_l, a_{l+1},\cdots , a_r](l ≤ r)\)。求满足条件的最终序列的最长长度。

输入格式

第一行一个正整数 \(n\),表示序列长度。

第二行 \(n\) 个正整数 \(a_1,\cdots , a_n\),表示序列。

输出格式

一个整数,满足条件的最终序列的最长长度。如果不存在这样的序列则输出“-1”(不含引号)。

样例数据

4
5 5 7 2
2

样例解释

一种方案是先选择 \(a_1, a_2\) 合并,得到 \([0, 7, 2]\),再选择前两个数合并,得到 \([7, 2]\)。不存在方案使得最终序

列长度为 \(3\) 或 \(4\)。

数据范围

对于所有测试点,\(1 ≤ n ≤ 10^5,0 ≤ a_i ≤ 10^9\)。

测试点 $n ≤ $ \(a_i ≤\)
1 ∼ 4 15 \(10^9\)
5 ∼ 8 100 3
9 ∼ 12 1000 3
13 ∼ 16 \(10^5\) 3
17 ∼ 20 \(10^5\) \(10^9\)

首先考虑前缀异或和,合并两个数,相当于去掉一个数。那么问题就是在前缀异或和中,每次删除一个1~n-1的数,问要多少次使得前缀异或和中没有相同的数。

设前缀异或和为\(s\),那么如果\(s_n=0\),整个数列的异或和始终为0,无解。

否则,如果出现两个相同的,那就要删除一个即可。也就是拿map判断重复,出现重复答案就加1.

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int n,a[N],s[N],cnt;
map<int,int>mp;
int main()
{
// freopen("sequence.in","r",stdin);
// freopen("sequence.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",a+i),s[i]=s[i-1]^a[i];
if(!s[n])
{
printf("-1");
return 0;
}
for(int i=0;i<=n;i++)
{
if(mp[s[i]])
++cnt;
mp[s[i]]=1;
}
printf("%d",n-cnt);
return 0;
}

[GDOIpj221B] 数列游戏的更多相关文章

  1. 1077. [NOIP2010冲刺六] 数列游戏

    [题目描述] 小M很喜欢找点游戏自娱自乐.有一天,她在纸上写了一串数字:1,1,2,5,4.接着她擦掉了一个1,结果发现剩下1,2,4都在自己所在的位置上,即1在第1位,2在第2位,4在第4位.她希望 ...

  2. 洛谷NOIp热身赛 T2123 数列游戏

    题目背景 此题为改编题,特别鸣谢倪星宇同学. 有一次,HKE和LJC在玩一个游戏. 题目描述 游戏的规则是这样的:LJC在纸上写下两个长度均为N的数列A和B,两个数列一一对应.HKE每次可以找两个相邻 ...

  3. P5154 数列游戏(区间dp)

    传送门 果然和dp有关的东西我绝对做不出来啊-- 设\(dp[i][j]\)表示消完区间\([i,j]\)中的数之后能得到的最大分数,如果消不完则为\(-inf\),否则枚举断点.顺便如果\(a[i] ...

  4. IntelliJ IDEA 2017版 spring-boot 2.03后 Pageable用法;Pageable用法,PageRequest过时,新用法;Pageable过时问题;

    1.旧版本Pageable用法: 但是会显示,这个版本已经过时,这时可以查看源码. 一般,一个方法过时,就会在其附近形成一个新的同名的但是其他用法的方法.按照这个理念,来找这个源码.很幸运,蒙对了,我 ...

  5. 洛谷NOIp热身赛题解

    洛谷NOIp热身赛题解 A 最大差值 简单树状数组,维护区间和.区间平方和,方差按照给的公式算就行了 #include<bits/stdc++.h> #define il inline # ...

  6. luogu NOIp热身赛(2018-11-07)题解

    为什么前面的人都跑得那么快啊? QAQ T1:区间方差 题目大意:询问区间方差,支持单点修改 首先把方差的式子展开,得到 $$d = \frac{a_1 + ... a_n}{n} - \frac{a ...

  7. 【总结】2022GDOI普及组试题与题解(缺两天的T4)

    标签 2022 广东省选普及组 GDOI 试题 前往Luogu下载 Luogu下载:This Day1题解 T1 邹忌讽齐王纳谏 打卡题,建议模拟 建议使用map,时间复杂度为\(O(nlogn)\) ...

  8. 清北学堂 2020 国庆J2考前综合强化 Day3

    目录 1. 题目 T1 石头剪刀布 题目描述 Sol T2 铺地毯 题目描述 Sol T3 数列游戏 题目描述 Sol T4 数星星 题目描述 Sol 2. 算法 -- 动态规划 1. 概述 2. 线 ...

  9. MMORPG大型游戏设计与开发(服务器 游戏场景 掉落与网络连接)

    时间一点点的消逝,伴着自己空闲日子将要结束的时候我尽量的学习和分享场景和AI的知识给朋友们,不过很遗憾的是这些文章还有不足的地方,就是有的难点没有完全的分析到.掉落在游戏中必不可少的,同时网络连接也是 ...

  10. js 斐波那契数列(兔子问题)

    对于JS初学者来说,斐波那契数列一直是个头疼的问题,总是理不清思路. 希望看完这篇文章之后会对你有帮助. 什么是斐波那契数列 : 答: 斐波那契数列,又称黄金分割数列.因数学家列昂纳多·斐波那契(Le ...

随机推荐

  1. react项目搭建-路由封装

    router v6 路由统一管理与添加,对是否登录进行判断. 1.使用脚手架创建项目 新建一个文件夹 ,在文件夹内部打开命令行工具. 执行命令:npx create-react-app 项目名字 将项 ...

  2. Go Web项目结构 + 基础代码

    Go Web工程 下面是项目的包图,可以通过包图来理清项目包的结构. Go Web工程 下面是项目的包图,可以通过包图来理清项目包的结构. 因为我是从Java转过来的,其实这种包的结构与Java的类似 ...

  3. 两种方式,轻松实现ChatGPT联网

    两种方式效果: 方式一:浏览器搜索内嵌插件 方式二:官方聊天页内嵌插件 首先,要有一个谷歌浏览器,然后再安装一个叫ChatGPT for Google,直接在谷歌里搜一下就能找,也可以Chrome应用 ...

  4. 【故障公告】一而再,再而三,三翻四复:数据库服务器 CPU 100%

    会员救园,故障捣乱,每当困难时,故障们总是喜欢雪上加霜过来考验你. 今天下班前 17:43~17:47 期间,园子的 SQL Server 数据库服务器突然出现 CPU 100% 问题. 发现问题后, ...

  5. CodeForces-1324E-Sleeping-Schedule

    题意 \(Vova\)有一个睡眠时间表,一天有\(h\)小时,\(Vova\)会睡\(n\)次觉,一次睡一天,在第\(i-1\)次睡醒后,\(Vova\)在\(a_i\)或\(a_i-1\)个小时候可 ...

  6. 使用“文心一言”编写技术博文《搭建企业知识库:基于 Wiki.js 的实践指南》

    百度于8月31日零点宣布,文心一言率先向全社会全面开放.我也是立即体验了下,感觉还不错.下面分享一下,如何使用"文心一言"写一篇技术博客. Step 01 生成文案主体 可以对文心 ...

  7. LeetCode297:hard级别中最简单的存在,java版,用时击败98%,内存击败百分之九十九

    本篇概览 因为欣宸个人水平有限,在刷题时一直不敢面对hard级别的题目,生怕出现一杯茶一包烟,一道hard做一天的窘境 这种恐惧心理一直在,直到遇见了它:LeetCode297,建议不敢做hard题的 ...

  8. Spring Bean 的作用域(Bean Scope)

    前言 大家好,我是 god23bin,今天我们来聊一聊 Spring 框架中的 Bean 作用域(Scope). 什么是 Bean 的作用域? 我们在以 XML 作为配置元数据的情况下,进行 Bean ...

  9. 西门子Teamcenter 许可分析

    西门子Teamcenter 许可 绑定了主机名称,mac地址 另外,Teamcenter可以支持多个许可服务 所以.......................找个正式许可复制就可以 end succ ...

  10. Modbus动态链接库供多语言使用 | Go

    Modbus协议控制动态链接库 应用场景 基于各门语言都有各自的modbus协议库,且良莠不齐,而且在具体的框架下可能存在版本依赖问题, 而且对modbus协议存在比较多的细节处理,可以查看modbu ...