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

 思路:

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.mzph.cn/news/26883.shtml

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

相关文章

c++使用条件变量实现生产消费问题(跨平台)

1. 生产者线程 思路&#xff1a;队列满了的情况下, 触发条件变量wait, 等待消费线程消费后唤醒继续生产. void ProducerThreadFunc() {while(1) { while(/* 容器已满 */) { /* 线程等待, 直到消费者消费后唤醒继续执行 */ }/* 生产动作 */ } }2. 消…

【Linux命令详解 | cp命令】Linux系统中用于复制文件或目录的命令

文章标题 简介参数列表二&#xff0c;使用介绍1. 复制单个文件2. 复制多个文件3. 复制目录4. 保留文件属性5. 创建链接6. 强制覆盖7. 显示复制进度8. 创建备份9. 只有当源文件比目标文件新时才复制10. 复制链接文件 总结 简介 cp命令在Linux系统中用于复制文件或目录。其功能强…

uniapp根据高度表格合并

没有发现比较友好的能够合并表格单元格插件就自己简单写了一个,暂时格式比较固定 一、效果如下 二、UI视图+逻辑代码 <template><view><uni-card :is-shadow="false" is-full

出现Error: Cannot find module ‘compression-webpack-plugin‘错误

错误&#xff1a; 解决&#xff1a;npm install --save-dev compression-webpack-plugin1.1.12 版本问题

nginx+flask+uwsgi部署遇到的坑

文章目录 1.环境&#xff1a;2.uwsgi_conf.ini具体配置内容3.nginx 具体配置4.具体命令(注意使用pip3命令安装)5.服务异常排查 1.环境&#xff1a; centos8 uWSGI 2.0.22 gmssl 3.2.2 nginx version: nginx/1.18.0 项目目录&#xff1a; 2.uwsgi_conf.ini具体配置内容 [uws…

回归预测 | MATLAB实现POA-CNN-BiGRU鹈鹕算法优化卷积双向门控循环单元多输入单输出回归预测

回归预测 | MATLAB实现POA-CNN-BiGRU鹈鹕算法优化卷积双向门控循环单元多输入单输出回归预测 目录 回归预测 | MATLAB实现POA-CNN-BiGRU鹈鹕算法优化卷积双向门控循环单元多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 MATLAB实现POA-CNN-BiGRU鹈鹕…

USB采集卡如何打pts

一、使用采集卡提供的pts 二、手动打pts 1.usb采集设备pts的问题 2.采集卡驱动&#xff0c;UVC/UAC&#xff0c;ffmpeg的关系 3.如何自己打pts 4.音视频同步调优 5.NTP等联网调时工具带来的不同步问题 一、使用采集卡提供的pts 我们用使用pc摄像头和使用pc麦克风声卡里的方法&…

Butterfly 安装文档(一) 快速开始

安装 在你的Hexo根目录里面 git clone -b master https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly 应用主题 修改 Hexo 根目录下的 _config.yml&#xff0c;把主题改为 butterfly theme: butterfly 安装插件 如果你没有 pug 以及 stylus 的渲染…

阻抗是什么?什么时候要考虑阻抗匹配?

在电路设计中&#xff0c;我们常常碰到跟阻抗有关的问题&#xff0c;那么到底什么是阻抗&#xff1f; 在具有电阻、电感和电容的电路里&#xff0c;对电路中电流所起的阻碍作用叫做阻抗。常用Z来表示&#xff0c;它的值由交流电的频率、电阻R、电感L、电容C相互作用来决定。由…

vue3学习-Pinia状态管理

Pinia 定义一个Store import { defineStore } from pinia export const useStore defineStore(main, {})这个 name&#xff0c;也称为 id&#xff0c;是必要的&#xff0c;Pinia 使用它来将 store 连接到 devtools。 将返回的函数命名为 use… 是跨可组合项的约定&#xff0…

RocketMQ使用

RocketMQ角色 RocketMQ的基本概念 同步发送消息 /*** author* create 2023-04-08 17:24* 发送同步消息* 适用于重要的消息 例如消息通知&#xff0c;短信通知*/ public class SyncProducer {public static void main(String[] args) throws Exception {String topic"…

re学习(29)攻防世界-CatFly(复原反汇编)

因为这是一个.dll文件&#xff0c;在Linux上运行一下&#xff1a; 找到主要函数&#xff1a;&#xff08;以及由上面三部分对应的代码部分&#xff09; __int64 __fastcall main(int a1, char **a2, char **a3) {size_t v3; // rbx__int16 v5[4]; // [rsp10h] [rbp-4B0h] B…

【MCU学习】GD32F427VG开发

&#xff08;一&#xff09;学习文档和例程 兆易创新GD32 MCU参考资料下载 1.GD232F4xx的Keil芯片支持包 2.标准固件库和示例程序 3.GD32F4xx_固件库使用指南_Rev1.2 4.用户手册&#xff1a;GD32F4xx_User_Manual_Rev2.8_CN 5.数据手册&#xff1a;GD32F427xx_Datasheet_Rev…

通过MySQL删除Hive元数据信息

之前遇到过一个问题&#xff0c;在进行Hive的元数据采集时&#xff0c;因为Hive表的文件已经被删除了&#xff0c;当时是无法删除表&#xff0c;导致元数据采集也发生了问题&#xff0c;所以希望通过删除Hive表的元数据解决上述问题。 之前安装时&#xff0c;经过特定的配置后…

单片机实现动态内存管理

1.简介 多数传统的单片机并没有动态内存管理功能。单片机通常具有有限的存储资源&#xff0c;包括固定大小的静态RAM&#xff08;SRAM&#xff09;用于数据存储和寄存器用于特定功能。这些资源在编译时被分配并且在程序的整个生命周期中保持不变。 2.动态内存管理好处 灵活性和…

SpringBoot使用@Autowired将实现类注入到List或者Map集合中

前言 最近看到RuoYi-Vue-Plus翻译功能 Translation的翻译模块配置类TranslationConfig&#xff0c;其中有一个注入TranslationInterface翻译接口实现类的写法让我感到很新颖&#xff0c;但这种写法在Spring 3.0版本以后就已经支持注入List和Map&#xff0c;平时都没有注意到这…

Jenkins持续集成-快速上手

Jenkins持续集成-快速上手 注&#xff1a;Jenkins一般不单独使用&#xff0c;而是需要依赖代码仓库&#xff0c;构建工具等。 搭配组合&#xff1a;GitGitee&#xff08;GitHub、GitLab&#xff09;MavenJenkins 前置准备 常见安装方式&#xff1a; war包Docker容器实例&…

WEB集群——http、tomcat

1. 简述静态网页和动态网页的区别。 2. 简述 Webl.0 和 Web2.0 的区别。 3. 安装tomcat8&#xff0c;配置服务启动脚本&#xff0c;部署jpress应用。 1. 简述静态网页和动态网页的区别。 1&#xff09;、静态网页 &#xff08;1&#xff09;、什么是静态网页 请求响应信息&…

Java 工具类(列表)

去重 对列表进行保留顺序的去重 List<Integer> list List.of(1, 2, 4, 3, 1); LinkedHashSet<Integer> set new LinkedHashSet<>(list); ArrayList<Integer> integers new ArrayList<>(set); // 1, 2, 4, 3删除 按照单逻辑进行删除 List&…

基于fpga的电子时钟

文章目录 前言实验手册一、实验目的二、实验原理1&#xff0e;理论原理2&#xff0e;硬件原理 三、系统架构设计四、模块说明1&#xff0e;模块端口信号列表按键消抖模块&#xff08;key&#xff09;计数器模块&#xff08;counter&#xff09;蜂鸣器乐谱模块(music)蜂鸣器发声…