[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 ...
随机推荐
- SpringBoot 启动流程追踪(第二篇)
上一篇文章分析了除 refresh 方法外的流程,并着重分析了 load 方法,这篇文章就主要分析 refresh 方法,可以说 refresh 方法是 springboot 启动流程最重要的一环,没 ...
- 《SQL与数据库基础》11. 索引
目录 索引 概述 结构 B-Tree B+Tree Hash 思考 分类 语法 SQL性能分析 SQL执行频率 慢查询日志 profile详情 explain执行计划 索引失效情况 范围查询 索引列运 ...
- 淘宝详情api接口的应用
淘宝详情API接口是一个基于HTTP协议的接口服务,可用于获取淘宝商品的具体信息.下面将介绍如何调用淘宝详情API接口获取淘宝商品数据的步骤. 1.注册账号并创建应用 首先,我们需要进行账号注册.实名 ...
- Codeforces 1462E2 Close Tuples (hard version)
题意 给一个长度为\(n\)的数组,取\(m\)个数字,其中最大值最小值相差不大于\(k\),问这种方式有多少种,答案\(\mod 10^9+7\). 分析 通过简单版本大概了解了这题要枚举最小值来判 ...
- mybatis数据库字段自动填充
背景描述 目前,大多数项目的数据库设计,都会添加一些公共字段,比如version(版本号).deleted(逻辑删除标识).create_time.update_time.create_by.upda ...
- Unity 性能优化之Shader分析处理函数ShaderUtil.HasProceduralInstancing: 深入解析与实用案例
Unity 性能优化之Shader分析处理函数ShaderUtil.HasProceduralInstancing: 深入解析与实用案例 点击封面跳转到Unity国际版下载页面 简介 在Unity中, ...
- 【规范】SpringBoot接口返回结果及异常统一处理,这样封装才优雅
前言 缘由 博友的需求就是我最大的动力 博友一说话,本狗笑哈哈.博友要我写啥,我就写啥. 特来一篇关于SpringBoot接口返回结果及异常统一处理,虽说封不封装都能用,但咱后端也得给前端小姐姐留个好 ...
- Avalonia开发(一)环境搭建
一.介绍 开源 GitHub:https://github.com/AvaloniaUI/Avalonia/ 多平台支持,包括Windows.mac OS.Linux.iOS.Android.Sams ...
- Note -「virtual tree」shorter vrt
Part. 1 Preface 没什么 preface. Part. 2 实现 具体来说就是把所有关键点按 \(\text{dfn}\) 排序,去重,然后求出相邻结点的 \(\text{LCA}\), ...
- oracle问题:ORA-09817及解决办法
某天以管理员身份登录公司测试库报ORA-09817错误,查了网上的文章说是审计文件没有存储空间造成的.我的这问题也证实了这一点,现将解决步骤分享: 1.发现问题:报ORA-09817 oracle@l ...