CF1891B Deja Vu

2024-02-09 21:28
文章标签 vu deja cf1891b

本文主要是介绍CF1891B Deja Vu,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目 

        You are given an array a of length n , consisting of positive integers, and an array x of length q , also consisting of positive integers.

There are q modification. On the i -th modification ( 1≤i≤q ), for each j ( 1≤j≤n ), such that aj​ is divisible by ​ 2^x, you add 2^{x-1} to aj​ . Note that xi​ ( 1≤xi​≤30 ) is a positive integer not exceeding 30.   After all modification queries, you need to output the final array.

        给你一个长度为 n 的数组 a,接下来依次进行 q 次修改,第 i 次会给你一个数 x,你需要将 a 中所有是 2^x 的倍数的数加上 2^{x-1},最后输出这个序列。共有 t 组数据。

分析

        看到 2^x的倍数,应该不难想到满足条件的数在二进制下的x位一下一定都为0,                                而加上 2^{x-1} 以后的数,一定不能被 2^{y} (y\geq x)整除                                                                    所以可以把操作序列化简为一个单调下降序列,然后我们将操作合并成 z

        再来看操作序列对a的影响,不难发现,若设x位满足a[ i ] 的第0位到第x位都为0的最大值,            则只有z的0~x位对a[ i ] 有贡献(因为再大的就不能被a[ i ]整除了 )                                                  对于求x,可以化简为 a[ i ] 最大能整除的2的整数次幂,可以通过lowbit函数求解                              对于求z,在已经求出x的情况下就非常好求了,具体见代码

Code

#include<bits/stdc++.h>
using namespace std;
int n,m,x,y,z,T,a[100005];
int main()
{scanf("%d",&T);while(T--){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++) scanf("%d",a+i);scanf("%d",&x); y=x; z=(1<<(x-1)); //第一个操作特殊处理for(int i=2;i<=m;i++){scanf("%d",&x);if(x<y) y=x,z|=(1<<(x-1)); //求单调下降的贡献 + 更新当前最小值}for(int i=1;i<=n;i++) a[i]+=(((a[i]&(-a[i]))-1)&z);//(a[i]&(-a[i]) 为求a[i]的lowbit//(a[i]&(-a[i])-1 为将满足条件的位子变为1//(a[i]&(-a[i])-1)&z  为去除z的最后x位//有lowbit性质可知,a[i]的后x位一定为0,固可以直接加for(int i=1;i<=n;i++) printf("%d ",a[i]); cout<<"\n";}return 0;
}

这篇关于CF1891B Deja Vu的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/695318

相关文章

基于SpringBoot+Vu e.js校园疫情防控系统的设计与实现

文章目录 前言具体实现截图详细视频演示技术栈系统测试为什么选择我官方认证玩家,服务很多代码文档,百分百好评,战绩可查!!入职于互联网大厂,可以交流,共同进步。有保障的售后 代码参考数据库参考源码获取 前言 💗博主介绍:✌闲鱼大玩家全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 👇🏻 精彩专栏

DEJA_VU3D - Cesium功能集 之 048-完整态势(军标)组件前端界面源码

前言 编写这个专栏主要目的是对工作之中基于Cesium实现过的功能进行整合,有自己琢磨实现的,也有参考其他大神后整理实现的,初步算了算现在有实现130个左右的功能,后续也会不断的追加,所以暂时打算一周2-3更的样子来更新本专栏(每篇博文都会奉上完整demo的源代码,尽可能把代码简洁一些)。博文内容如存在错误或者有可改进之处,也希望在这里和各位大佬交流提高一下。 更多内容/样例/demo说明:D

DEJA_VU3D - Cesium功能集 之 完整态势标绘组件系列预告

前言 编写这个专栏主要目的是对工作之中基于Cesium实现过的功能进行整合,有自己琢磨实现的,也有参考其他大神后整理实现的,初步算了算现在有差不多实现小100个左右的功能,后续也会不断的追加,所以暂时打算一周2-3更的样子来更新本专栏(每篇博文都会奉上完整demo的源代码,尽可能把代码简洁一些)。博文内容如存在错误或者有可改进之处,也希望在这里和各位大佬交流提高一下。 介绍 专栏内容本着尽可

DEJA_VU3D - Cesium功能集 之 120-天气效果-雷电

前言 编写这个专栏主要目的是对工作之中基于Cesium实现过的功能进行整合,有自己琢磨实现的,也有参考其他大神后整理实现的,初步算了算现在有差不多实现小140个左右的功能,后续也会不断的追加,所以暂时打算一周2-3更的样子来更新本专栏(每篇博文都会奉上完整demo的源代码,尽可能把代码简洁一些)。博文内容如存在错误或者有可改进之处,也希望在这里和各位大佬交流提高一下。 专栏地址:DEJA_VU

DEJA_VU3D - Cesium功能集 之 118-雷达扫描(格网效果)

前言 编写这个专栏主要目的是对工作之中基于Cesium实现过的功能进行整合,有自己琢磨实现的,也有参考其他大神后整理实现的,初步算了算现在有差不多实现小140个左右的功能,后续也会不断的追加,所以暂时打算一周2-3更的样子来更新本专栏(每篇博文都会奉上完整demo的源代码,尽可能把代码简洁一些)。博文内容如存在错误或者有可改进之处,也希望在这里和各位大佬交流提高一下。 专栏地址:DEJA_VU

DEJA_VU3D - Cesium功能集 之 117-雷达扫描(圆环效果)

前言 编写这个专栏主要目的是对工作之中基于Cesium实现过的功能进行整合,有自己琢磨实现的,也有参考其他大神后整理实现的,初步算了算现在有差不多实现小140个左右的功能,后续也会不断的追加,所以暂时打算一周2-3更的样子来更新本专栏(每篇博文都会奉上完整demo的源代码,尽可能把代码简洁一些)。博文内容如存在错误或者有可改进之处,也希望在这里和各位大佬交流提高一下。 专栏地址:DEJA_VU

DEJA_VU3D - Cesium功能集 之 116-雷达扫描(扇形效果)

前言 编写这个专栏主要目的是对工作之中基于Cesium实现过的功能进行整合,有自己琢磨实现的,也有参考其他大神后整理实现的,初步算了算现在有差不多实现小140个左右的功能,后续也会不断的追加,所以暂时打算一周2-3更的样子来更新本专栏(每篇博文都会奉上完整demo的源代码,尽可能把代码简洁一些)。博文内容如存在错误或者有可改进之处,也希望在这里和各位大佬交流提高一下。 专栏地址:DEJA_VU

DEJA_VU3D - Cesium功能集 之 114-雷达效果(基础效果)

前言 编写这个专栏主要目的是对工作之中基于Cesium实现过的功能进行整合,有自己琢磨实现的,也有参考其他大神后整理实现的,初步算了算现在有差不多实现小140个左右的功能,后续也会不断的追加,所以暂时打算一周2-3更的样子来更新本专栏(每篇博文都会奉上完整demo的源代码,尽可能把代码简洁一些)。博文内容如存在错误或者有可改进之处,也希望在这里和各位大佬交流提高一下。 专栏地址:DEJA_VU

DEJA_VU3D - Cesium功能集 之 112-获取圆节点(1)

前言 编写这个专栏主要目的是对工作之中基于Cesium实现过的功能进行整合,有自己琢磨实现的,也有参考其他大神后整理实现的,初步算了算现在有差不多实现小140个左右的功能,后续也会不断的追加,所以暂时打算一周2-3更的样子来更新本专栏(每篇博文都会奉上完整demo的源代码,尽可能把代码简洁一些)。博文内容如存在错误或者有可改进之处,也希望在这里和各位大佬交流提高一下。 专栏地址:DEJA_VU

DEJA_VU3D - Cesium功能集 之 089-台风范围几何绘制

前言  编写这个专栏主要目的是对工作之中基于Cesium实现过的功能进行整合,有自己琢磨实现的,也有参考其他大神后整理实现的,初步算了算现在有差不多实现小130个左右的功能,后续也会不断的追加,所以暂时打算一周2-3更的样子来更新本专栏(尽可能把代码简洁一些)。博文内容如存在错误或者有可改进之处,也希望在这里和各位大佬交流提高一下。 更多内容/样例/demo说明:DEJA_VU3D完整功能目录