[GDOIpj221B] 数列游戏
第二题 数列游戏
提交文件: 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] 数列游戏的更多相关文章
- 1077. [NOIP2010冲刺六] 数列游戏
[题目描述] 小M很喜欢找点游戏自娱自乐.有一天,她在纸上写了一串数字:1,1,2,5,4.接着她擦掉了一个1,结果发现剩下1,2,4都在自己所在的位置上,即1在第1位,2在第2位,4在第4位.她希望 ...
- 洛谷NOIp热身赛 T2123 数列游戏
题目背景 此题为改编题,特别鸣谢倪星宇同学. 有一次,HKE和LJC在玩一个游戏. 题目描述 游戏的规则是这样的:LJC在纸上写下两个长度均为N的数列A和B,两个数列一一对应.HKE每次可以找两个相邻 ...
- P5154 数列游戏(区间dp)
传送门 果然和dp有关的东西我绝对做不出来啊-- 设\(dp[i][j]\)表示消完区间\([i,j]\)中的数之后能得到的最大分数,如果消不完则为\(-inf\),否则枚举断点.顺便如果\(a[i] ...
- IntelliJ IDEA 2017版 spring-boot 2.03后 Pageable用法;Pageable用法,PageRequest过时,新用法;Pageable过时问题;
1.旧版本Pageable用法: 但是会显示,这个版本已经过时,这时可以查看源码. 一般,一个方法过时,就会在其附近形成一个新的同名的但是其他用法的方法.按照这个理念,来找这个源码.很幸运,蒙对了,我 ...
- 洛谷NOIp热身赛题解
洛谷NOIp热身赛题解 A 最大差值 简单树状数组,维护区间和.区间平方和,方差按照给的公式算就行了 #include<bits/stdc++.h> #define il inline # ...
- luogu NOIp热身赛(2018-11-07)题解
为什么前面的人都跑得那么快啊? QAQ T1:区间方差 题目大意:询问区间方差,支持单点修改 首先把方差的式子展开,得到 $$d = \frac{a_1 + ... a_n}{n} - \frac{a ...
- 【总结】2022GDOI普及组试题与题解(缺两天的T4)
标签 2022 广东省选普及组 GDOI 试题 前往Luogu下载 Luogu下载:This Day1题解 T1 邹忌讽齐王纳谏 打卡题,建议模拟 建议使用map,时间复杂度为\(O(nlogn)\) ...
- 清北学堂 2020 国庆J2考前综合强化 Day3
目录 1. 题目 T1 石头剪刀布 题目描述 Sol T2 铺地毯 题目描述 Sol T3 数列游戏 题目描述 Sol T4 数星星 题目描述 Sol 2. 算法 -- 动态规划 1. 概述 2. 线 ...
- MMORPG大型游戏设计与开发(服务器 游戏场景 掉落与网络连接)
时间一点点的消逝,伴着自己空闲日子将要结束的时候我尽量的学习和分享场景和AI的知识给朋友们,不过很遗憾的是这些文章还有不足的地方,就是有的难点没有完全的分析到.掉落在游戏中必不可少的,同时网络连接也是 ...
- js 斐波那契数列(兔子问题)
对于JS初学者来说,斐波那契数列一直是个头疼的问题,总是理不清思路. 希望看完这篇文章之后会对你有帮助. 什么是斐波那契数列 : 答: 斐波那契数列,又称黄金分割数列.因数学家列昂纳多·斐波那契(Le ...
随机推荐
- react项目搭建-路由封装
router v6 路由统一管理与添加,对是否登录进行判断. 1.使用脚手架创建项目 新建一个文件夹 ,在文件夹内部打开命令行工具. 执行命令:npx create-react-app 项目名字 将项 ...
- Go Web项目结构 + 基础代码
Go Web工程 下面是项目的包图,可以通过包图来理清项目包的结构. Go Web工程 下面是项目的包图,可以通过包图来理清项目包的结构. 因为我是从Java转过来的,其实这种包的结构与Java的类似 ...
- 两种方式,轻松实现ChatGPT联网
两种方式效果: 方式一:浏览器搜索内嵌插件 方式二:官方聊天页内嵌插件 首先,要有一个谷歌浏览器,然后再安装一个叫ChatGPT for Google,直接在谷歌里搜一下就能找,也可以Chrome应用 ...
- 【故障公告】一而再,再而三,三翻四复:数据库服务器 CPU 100%
会员救园,故障捣乱,每当困难时,故障们总是喜欢雪上加霜过来考验你. 今天下班前 17:43~17:47 期间,园子的 SQL Server 数据库服务器突然出现 CPU 100% 问题. 发现问题后, ...
- CodeForces-1324E-Sleeping-Schedule
题意 \(Vova\)有一个睡眠时间表,一天有\(h\)小时,\(Vova\)会睡\(n\)次觉,一次睡一天,在第\(i-1\)次睡醒后,\(Vova\)在\(a_i\)或\(a_i-1\)个小时候可 ...
- 使用“文心一言”编写技术博文《搭建企业知识库:基于 Wiki.js 的实践指南》
百度于8月31日零点宣布,文心一言率先向全社会全面开放.我也是立即体验了下,感觉还不错.下面分享一下,如何使用"文心一言"写一篇技术博客. Step 01 生成文案主体 可以对文心 ...
- LeetCode297:hard级别中最简单的存在,java版,用时击败98%,内存击败百分之九十九
本篇概览 因为欣宸个人水平有限,在刷题时一直不敢面对hard级别的题目,生怕出现一杯茶一包烟,一道hard做一天的窘境 这种恐惧心理一直在,直到遇见了它:LeetCode297,建议不敢做hard题的 ...
- Spring Bean 的作用域(Bean Scope)
前言 大家好,我是 god23bin,今天我们来聊一聊 Spring 框架中的 Bean 作用域(Scope). 什么是 Bean 的作用域? 我们在以 XML 作为配置元数据的情况下,进行 Bean ...
- 西门子Teamcenter 许可分析
西门子Teamcenter 许可 绑定了主机名称,mac地址 另外,Teamcenter可以支持多个许可服务 所以.......................找个正式许可复制就可以 end succ ...
- Modbus动态链接库供多语言使用 | Go
Modbus协议控制动态链接库 应用场景 基于各门语言都有各自的modbus协议库,且良莠不齐,而且在具体的框架下可能存在版本依赖问题, 而且对modbus协议存在比较多的细节处理,可以查看modbu ...