2023牛客暑期多校训练营7-c-Beautiful Sequence

news2025/1/18 13:54:14

 思路:

a_{i}\bigotimes a_{i+1}=b_{i}\rightarrow a_{i}\bigotimes a_{i+1}\bigotimes a_{i+1}=b_{i}\bigotimes a_{i+1}\rightarrow a_{i}= b_{i}\bigotimes a_{i+1},则有a_{i}=a_{1}\bigotimes b_{1}\bigotimes b_{2}...\bigotimes b_{i-1},也就是说只要知道A1就可以求任意A。由于A是升序排列,所以对于任意B_{i},二进制所包含1的最高位第k位来说,表明A_{i}A_{i+1}第k位相反,A_{i+1}要大一些,所以它的第k位为1,A_{i}的第k位为0,例如Bi=10对应的二进制数为1010,最高位1就是第3位,所以就能确定Ai+1的第三位为1,Ai的第三位为0;类似这样操作,就能找出A中很多确定的值,不确定的位根据k去判断。为了方便计算,我们的是要去预处理b的前缀异或s[i]=b_{1}\bigotimes b_{2}...\bigotimes b_{i-1},然后解出a1就能得出,为了找到a1的某些确定值,我们同样的去找bi最高位1为第k位,然后记录s[i]的第k位的值,因为要使a[i+1]的第k位为1,由于a_{i+1}=a_{1}\bigotimes s_{i}\bigotimes b_{i},那么只要记录下si,就能根据a1的值得到ai+1的第k位为1;而且若出现多次相同的最高位1,前缀异或值必须相等,否则矛盾输出-1。

对于未知位,可以把这些未知位紧贴看成一个二进制数,使此二进制的值为k-1,就是所求字典序第k小的值。例如k=3,a1=1x1x0,x代表未知,将两个未知位紧贴xx,让它的值为2也就是二进制表示10,就是字典序第三小的值,所以a1=11100。

#include<bits/stdc++.h>
using namespace std;
int s[1000005];
int a[1000005];//第i位上是否为1 
int a1[1000005];//第i位上为1的前i-1位异或和 
int main()
{
	int T;
	cin>>T;
	int h=0;//最高位 
	while(T--)
	{
		int n,k;
		cin>>n>>k;
		memset(a,0,sizeof(a));
		memset(a1,0,sizeof(a1));
		int flag=1;
		int a2=30;//所包含的最高位,不能超过30 
		for(int i=1;i<n;i++)
		{
			int b;
			cin>>b;
			s[i+1]=s[i]^b;
			if(b==0)continue;
			h=0;
			while(b)
			{
				h++;
				b/=2;	 
			}
			h-=1;
			//相同最高位1的前缀异或值相同 
			if(a[h]&&((s[i]>>h)&1)!=a1[h]) flag=0;
			if(!a[h])a2-=1;
			a[h]=1;
			a1[h]=(s[i]>>h)&1; 
		}
		if(flag==0||(1<<a2)<k)cout<<-1<<endl;
		else 
		{
			int a11=0;
			k-=1;
			int cnt=0;
			//确定a1 
			for(int i=0;i<30;i++)
			{
				//根据最高位1的前缀异或,确定a1的对应位的值。 
				if(a[i])a11|=(a1[i]<<i);
				else
				{
					int m=((k>>cnt)&i)<<i;//未知位,根据k的二进制数分配 
					a11|=m;
					cnt++;
				}
			}
			for(int i=1;i<=n;i++)
			{
				cout<<int(a11^s[i])<<" ";
			}
			cout<<endl; 
		}
	}
}

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

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

相关文章

echarts 柱状图 实例

实例效果&#xff1a; 代码&#xff1a; draw(data1, data2,data3) {var option {// backgroundColor: rgb(10,36,68),tooltip: {trigger: axis,axisPointer: {type: shadow,},formatter: function (params: any, ticket: any, callback: any) {const item params[0];var str…

关于“为爱发电”的一些说明~~

对不起&#xff0c;兄弟们&#xff0c;收费了。。 1. 为什么设置收费 emm...混口饭吃。 也是大龄程序员积在极探索挣钱之路。 2. 都有哪些服务 本专栏的手把手教学资料工程文件&#xff0c;但是近期忙于CMN&#xff0c;可能没时间答疑和讨论&#xff0c;见谅。 另外&#xff0…

知识图谱实战应用23-【知识图谱的高级用法】Neo4j图算法的Cypher查询语句实例

大家好,我是微学AI,今天给大家介绍一下知识图谱实战应用23-【知识图谱的高级用法】Neo4j图算法的Cypher查询语句实例,Neo4j图算法是一套在Neo4j图数据库上运行的算法集合。这些算法专门针对图数据结构进行设计,用于分析、查询和处理图数据。图算法可以帮助我们发现图中的模…

class version 61 java version 17.0.4

class version (javap -verbose xxxx.class)_spencer_tseng的博客-CSDN博客

概念解析 | 合成孔径雷达中运动补偿与自聚焦的关系

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:合成孔径雷达中运动补偿和自聚焦的联系与差别 概念解析 | 合成孔径雷达运动补偿与自聚焦的关系研究 基于二维空变运动补偿的机动平台大斜视SAR稀疏自聚焦方法 一、背景介绍 合成…

qt源码---事件系统之QCoreApplication

上一节分析了qt和windows系统之间的消息的传递&#xff0c;本节着重看一下&#xff0c;qt内部的事件是如何传递的&#xff1f; 1.sendEvent函数 在使用的自定义事件时&#xff0c;有时需要手动抛出一个事件&#xff0c;常用的方式有2种&#xff0c;其一时阻塞式的sendEvent函…

优化手机性能,解决卡顿问题:关闭这3个微信开关,释放内存空间

在日常使用手机的过程中&#xff0c;微信无疑是受欢迎和广泛使用的社交应用之一。然而&#xff0c;由于微信的一些默认设置可能会占用大量内存空间&#xff0c;导致手机性能下降并出现卡顿问题。为了提高手机的运行效果&#xff0c;我们需要注意并关闭这3个微信开关&#xff0c…

面试热题(环形链表II)

给定一个链表&#xff0c;返回链表开始入环的第一个节点。 从链表的头节点开始沿着 next 指针进入环的第一个节点为环的入口节点。如果链表无环&#xff0c;则返回 null。 为了表示给定链表中的环&#xff0c;我们使用整数 pos 来表示链表尾连接到链表中的位置&#xff08;索引…

最后一次模拟考试题解

哦我想这不用看都知道是为了水任务 T1 黑白染色 其实这题有原 什么手写体 md (指 markdown) 分析 首先这题如果你题目没看错的话 ,会发现其实他是 n m n \times m nm 让你求 n n n \times n nn 的区域内的点&#xff08;不会只有我一个人题目看错了罢 然后我们会发现…

Rust 编程小技巧摘选(7)

Rust 编程小技巧(7) 1. 结构体 Display trait 结构体的两种形式&#xff0c;对应的成员取法不同&#xff1b; 前者用 self.成员变量名 self.x, self.y&#xff1b;后者用 self.成员索引号 self.0, self.1, self.2, ...... use std::fmt::Display; use std::fmt::Result; us…

云计算——ACA学习 云计算概述

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​ 目录 写在前面 上章回顾 本章简介 本章目标 一.云计算产生背景 1.信息时代的重点变革…

使用 RKE 方式搭建 K8s 集群并部署 NebulaGraph

本文由社区用户 Albert 贡献&#xff0c;首发于 NebulaGraph 论坛&#xff0c;旨在提供多一种的部署方式使用 NebulaGraph。 在本文&#xff0c;我将会详细地记录下我用 K8s 部署分布式图数据库 NebulaGraph 的过程。下面是本次实践的内容规划&#xff1a; 一到十章节为 K8s 集…

【flink】Chunk splitting has encountered exception

执行任务报错&#xff1a; Chunk splitting has encountered exception 错误信息截图&#xff1a; 完整的错误信息&#xff1a; 16:30:43,911 ERROR org.apache.flink.runtime.source.coordinator.SourceCoordinator [SourceCoordinator-Source: CDC Sourceorg.jobslink.flink…

python爬虫3:requests库-案例1

python爬虫3&#xff1a;requests库-案例1 前言 ​ python实现网络爬虫非常简单&#xff0c;只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点&#xff0c;方便以后复习。 申明 ​ 本系列所涉及的代码仅用于个人研究与讨论&#xff0c;并不会对网…

分享由于找不到vcruntime140_1.dll,无法继续执行代码的几种解决方法

vcruntime140_1.dll是Microsoft Visual C Redistributable for Visual Studio 2015中的一个动态链接库文件。它是用于支持在Windows操作系统上运行使用Visual C编写的应用程序或游戏所必需的文件之一。当出现vcruntime140_1.dll丢失的错误时&#xff0c;通常是由于缺少或损坏了…

Python系统学习1-2-计算机基础,python入门技巧

目录 一、硬件 二、软件&#xff1a;程序文档 三、基础知识 四、python执行过程 五、Pycharm使用技巧 一、硬件 计算机五大部件&#xff1a;运算器&#xff0c;存储器&#xff0c;控制器、输入设备&#xff0c;输出设备。 运算器和控制器 集成在CPU中。 存储&#xff1a…

【笔记】移动光猫改桥接

1. 登录后台 移动光猫的超管和密码&#xff08;百度的&#xff09; 账号&#xff1a;CMCCAdmin 密码&#xff1a;aDm8H%MdA 浏览器访问 192.168.1.1 并登录 2. 选择连接 点击“网络”&#xff0c;在“连接名称”下拉框选择 INTENET_R_VID 字样的连接&#xff0c;并截图备…

java.lang.IllegalArgumentException: Invalid character found in methodname

postman请求异常&#xff1a;java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens

38K红外通信原理

红外通信原理 接收 以VS1838B红外接收管为例&#xff0c;正面对着你&#xff0c;引脚从左到右依次为OUT&#xff0c;GND&#xff0c;VCC &#xff0c;电路图为 工作电压2.7&#xff5e;5.5V&#xff0c;红外接收头只接受38K信号&#xff08;误差范围内&#xff09;&#xff0…

K8S系列文章之 离线安装自动化工具Ansible

参考 文档 离线安装 Ansible - DevOps - dbaselife 一、Ansible简介 Ansible是一款开源的IT配置管理工具&#xff0c;常被IT界的小伙伴们用于自动化的场景&#xff0c;多用在服务部署、配置管理方面。配置文件采用最常见的yaml格式&#xff0c;学习起来也是比较容易&#xff…