第二题 数列游戏

提交文件: 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. SpringBoot 启动流程追踪(第二篇)

    上一篇文章分析了除 refresh 方法外的流程,并着重分析了 load 方法,这篇文章就主要分析 refresh 方法,可以说 refresh 方法是 springboot 启动流程最重要的一环,没 ...

  2. 《SQL与数据库基础》11. 索引

    目录 索引 概述 结构 B-Tree B+Tree Hash 思考 分类 语法 SQL性能分析 SQL执行频率 慢查询日志 profile详情 explain执行计划 索引失效情况 范围查询 索引列运 ...

  3. 淘宝详情api接口的应用

    淘宝详情API接口是一个基于HTTP协议的接口服务,可用于获取淘宝商品的具体信息.下面将介绍如何调用淘宝详情API接口获取淘宝商品数据的步骤. 1.注册账号并创建应用 首先,我们需要进行账号注册.实名 ...

  4. Codeforces 1462E2 Close Tuples (hard version)

    题意 给一个长度为\(n\)的数组,取\(m\)个数字,其中最大值最小值相差不大于\(k\),问这种方式有多少种,答案\(\mod 10^9+7\). 分析 通过简单版本大概了解了这题要枚举最小值来判 ...

  5. mybatis数据库字段自动填充

    背景描述 目前,大多数项目的数据库设计,都会添加一些公共字段,比如version(版本号).deleted(逻辑删除标识).create_time.update_time.create_by.upda ...

  6. Unity 性能优化之Shader分析处理函数ShaderUtil.HasProceduralInstancing: 深入解析与实用案例

    Unity 性能优化之Shader分析处理函数ShaderUtil.HasProceduralInstancing: 深入解析与实用案例 点击封面跳转到Unity国际版下载页面 简介 在Unity中, ...

  7. 【规范】SpringBoot接口返回结果及异常统一处理,这样封装才优雅

    前言 缘由 博友的需求就是我最大的动力 博友一说话,本狗笑哈哈.博友要我写啥,我就写啥. 特来一篇关于SpringBoot接口返回结果及异常统一处理,虽说封不封装都能用,但咱后端也得给前端小姐姐留个好 ...

  8. Avalonia开发(一)环境搭建

    一.介绍 开源 GitHub:https://github.com/AvaloniaUI/Avalonia/ 多平台支持,包括Windows.mac OS.Linux.iOS.Android.Sams ...

  9. Note -「virtual tree」shorter vrt

    Part. 1 Preface 没什么 preface. Part. 2 实现 具体来说就是把所有关键点按 \(\text{dfn}\) 排序,去重,然后求出相邻结点的 \(\text{LCA}\), ...

  10. oracle问题:ORA-09817及解决办法

    某天以管理员身份登录公司测试库报ORA-09817错误,查了网上的文章说是审计文件没有存储空间造成的.我的这问题也证实了这一点,现将解决步骤分享: 1.发现问题:报ORA-09817 oracle@l ...