尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

CF1891B Deja Vu 解题报告

CF1891B Deja Vu 解题报告
📅 发布时间:2026/6/20 13:53:50

题目传送门

题意已经叙述的很清楚,这里不再赘述。

思路

在这里我第一眼的思路是分块或者是线段树,可能是数据结构题做多 了留下来的后遗症吧,但在这里这个题作为 B 题,肯定有不用高级数据结构的做法。

然后我就发现了一个性质,如果一个数是 \(2^x\) 的倍数,那么它可以写成 \(k\times 2^x=2k\times 2^{x-1}\),那么它加上 \(2^{x-1}\) 之后就变成了 \((2k+1)\times 2^{x-1}\),由于 \(2k-1\) 为奇数,那么它肯定不会再是 \(2^x\) 的倍数(也必然不会是 \(2\) 的更高次幂的倍数),而只是 \(2^{x-1}\) 的倍数。

有了这个性质,那么假设一个数是 \(2^{30}\) 的倍数,那么它最多进行 \(30\) 次操作就不能进行任何操作,所以最好的复杂度就是每次只修改需要修改的数。

我们考虑把 \(2^i(1\le i\le 30)\) 的倍数的下标给维护成一个队列 \(i\)(\(2^0\) 的倍数由于不可能在进行任何操作,所以可以维护也可以不维护),每次操作取出所有大于等于 \(x\) 的队列的所有下标进行操作,操作完之后扔到 \(x-1\) 的队列中。

时间复杂度 \(O(30\sum n)\)。

AC Code

#include<iostream>
#include<queue>
#define N 100005
using namespace std;
int T,n,q;
int a[N];
queue<int>que[31];//第i个队列存2^i的倍数 
int re()//朴素的快读 
{int x=0,p=1;char y=getchar();for(;y>'9'||y<'0';y=getchar())if(y=='-')p=-p;for(;y>='0'&&y<='9';y=getchar())x=x*10+y-'0';return x*p;
}
void wr(int x)//朴素的快写 
{if(x<0)putchar('-'),x=-x;if(x>9)wr(x/10);putchar(x%10+'0');
}
signed main()
{T=re();while(T--){n=re(),q=re();for(int i=1;i<=n;i++)//O(30n){a[i]=re();int l=0;for(;l<=30;l++)if(a[i]%(1<<l))//找出第一个不满足为2^l倍数的数 break;que[l-1].push(i);}while(q--){int x=re();for(int i=30;i>=x;i--)//O(30n)while(que[i].size()){int now=que[i].front();que[i].pop();a[now]+=(1<<(x-1));que[x-1].push(now);}}for(int i=1;i<=n;i++)wr(a[i]),putchar(' ');putchar('\n');for(int i=1;i<=30;i++)//用完清空,复杂度O(n) while(que[i].size())que[i].pop();}return 0;
}

相关新闻

  • python环境及pip的操作
  • 清除企业不良记录的通知
  • 实习面试题-Zookeeper 面试题

最新新闻

  • 指针运算与指针数组——加减、相减与函数指针
  • 2026年食品检重秤厂家推荐:上海实干实业有限公司多规格高精度设备解析 - 品牌推荐官
  • 基于MC9S08JM60的USB数据采集器:从硬件设计到固件开发的完整实践
  • 嵌入式Linux内核移植实战:从LTIB配置到MPC5121e定制板引导
  • 湖北状元甲欢聚餐饮:美食推荐与必吃上的热门餐厅及特色美食解析 - 品牌推荐官
  • Switch大气层破解系统:3步解决配置难题与性能优化方案

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号