当前位置: 首页 > news >正文

Poi 的新加法(Easy Version)【牛客tracker 每日一题】

Poi 的新加法(Easy Version)

时间限制:2秒 空间限制:128M

网页链接

牛客tracker

牛客tracker & 每日一题,完成每日打卡,即可获得牛币。获得相应数量的牛币,能在【牛币兑换中心】,换取相应奖品!助力每日有题做,丰盈牛币日益多!

题目描述

本题为问题的简单版本,两题的唯一区别在于询问的次数及询问的数据范围。

P o i PoiPoi发明了一种新的加法:二进制只进位加法(下文用f ( x , y ) f(x,y)f(x,y)指代)。在这种加法下(为了便于理解,本表中数字使用二进制表达):

xyf(x,y)
000000
000100
010000
010110

需要注意的是,我们只考虑一次进位,即不考虑进位造成的其他位的变动导致的再次进位,比如f ( 11 , 01 ) = 10 f(11,01)=10f(11,01)=10

简而言之,f ( x , y ) = x + y − ( x ⊕ y ) f(x,y)=x+y−(x⊕y)f(x,y)=x+y(xy),其中⊕ ⊕代表二进制按位异或运算。

现在,给定一个长度为n nn的序列{ a 1 , a 2 , … , a n } \{a_1,a_2,…,a_n\}{a1,a2,,an}。你需要处理q qq个查询,每个查询会给定l llr rr,求解:

f ( f ( f ( ⋯ f ( f ( a l , a l + 1 ) , a l + 2 ) , ⋯ ) , a r − 1 ) , a r ) f(f(f(⋯f(f(a_l,a_{l+1}),a_{l+2}),⋯),a_{r−1}),a_r)f(f(f(f(f(al,al+1),al+2),),ar1),ar)

输入描述:

每个测试文件均包含多组测试数据。第一行输入一个整数T ( 1 ≤ T ≤ 10 6 ) T(1≤T≤10^6)T(1T106)代表数据组数,每组测试数据描述如下:
第一行输入两个整数n , q ( 1 ≤ n ≤ 10 6 ; q = 1 ) n,q(1≤n≤10^6; q=1)n,q(1n106;q=1),代表序列中的元素个数、查询次数。
第二行输入n nn个整数a 1 , a 2 , … , a n ( 0 ≤ a i < 2 60 ) a_1,a_2,…,a_n(0≤a_i<2^{60})a1,a2,,an(0ai<260),代表序列中的元素。
此后q qq行,第i ii行输入两个整数l i , r i ( l i = 1 ; r i = n ) l_i,r_i(l_i=1; r_i=n)li,ri(li=1;ri=n),代表第i ii次询问的区间。

除此之外,保证单个测试文件的n nn之和不超过10 6 10^6106q qq之和不超过10 6 10^6106

输出描述:

对于每个查询,新起一行。输出一个整数,代表该次查询的结果。

示例1

输入:

3 2 1 1 1 1 2 3 1 2 3 3 1 3 5 1 31 31 31 31 31 1 5

输出:

2 0 48

解题思路

本题核心是新加法公式化简+顺序迭代计算,高效解决区间运算问题。首先通过位运算公式推导,将题目定义的新加法简化为核心规律:f ( x , y ) = 2 × ( x & y ) f(x,y)=2 \times (x \& y)f(x,y)=2×(x&y),即两数按位与后左移一位。题目中所有查询均为整个序列区间[ 1 , n ] [1,n][1,n],因此无需预处理数据结构,直接顺序遍历序列计算即可:以第一个元素为初始值,依次对后续每个元素执行当前结果与元素按位与,再左移一位的操作,遍历完成后得到的数值就是最终答案。算法时间复杂度为O ( n ) O(n)O(n),完美适配大数据量的时间与空间约束。

总结

核心逻辑:化简新加法为2 ∗ ( x & y ) 2*(x\&y)2(x&y),顺序遍历区间完成迭代运算。
关键操作:位运算公式推导、顺序迭代计算区间嵌套新加法结果。
效率保障:线性时间复杂度,无额外空间开销,高效处理大规模输入。

代码内容

#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;typedefunsignedlonglongull;typedefvector<vector<ll>>vvt;typedefpair<ll,ll>pll;constll N=1e6+10;constll p=1e9+7;constll INF=1e18;constll M=1e6+10;ll a[N];voidsolve(){ll n,q;cin>>n>>q;for(ll i=1;i<=n;i++)cin>>a[i];while(q--){ll l,r,ans;cin>>l>>r;ans=a[l];for(ll i=l+1;i<=r;i++)ans=(ans&a[i])<<1;cout<<ans<<endl;}}intmain(){ll t=1;cin>>t;while(t--)solve();return0;}
http://www.jsqmd.com/news/703560/

相关文章:

  • Zotero SciPDF插件:如何实现学术文献PDF自动下载的完整免费解决方案
  • 3个简单步骤,让你的Obsidian笔记拥有AI大脑:Smart Connections完整指南
  • 4月26日成都地区耐磨板(NM400-500;厚度6-40mm)最新报价 - 四川盛世钢联营销中心
  • ComfyUI-Manager终极指南:如何5分钟内完成AI工作流依赖管理
  • Outfit字体架构深度解析:从几何美学到工程实践的现代字体设计范式
  • 3分钟快速上手:用http-server打造全球化多语言静态网站
  • SSCom串口调试助手:Linux与macOS平台的免费串口通信终极指南
  • 视频转PPT终极指南:3步自动化提取视频中的幻灯片
  • Jsxer技术深度解析:JSXBIN二进制格式极速反编译引擎架构揭秘
  • 别再单机硬扛了!手把手教你用JMeter 5.x搭建分布式压测集群(Linux+Windows混合环境)
  • 手把手教你用C#和ClawPDF二次开发:打造自己的跨网段打印机共享服务(附KKPrinter源码)
  • LLM应用可观测性实践:开源平台LangWatch实现全链路追踪与优化
  • 华硕笔记本终极性能管家:GHelper的3个核心场景与7天快速上手指南
  • 智能体架构实战指南:从基础模式到生产级系统构建
  • VS Code Copilot Next 工作流配置为何总失败?揭秘微软未公开的3层权限校验链、Workspace Trust 陷阱与Language Server 同步延迟真相
  • 告别卡顿!在Ubuntu 22.04上为Chrome/Brave开启硬件解码,拯救你的笔记本电池
  • FanControl终极指南:Windows风扇控制完整教程
  • ncmdump:革新性音乐格式转换方案,解锁数字音乐所有权
  • 2026年市政施工劳保制造厂家性价比排行,哪家值得选 - 工业品网
  • 2026年3月,口碑佳的BMC绝缘材料门店推荐揭秘,市面上BMC绝缘材料东源电器专注行业多年经验,口碑良好 - 品牌推荐师
  • 为什么你的时序模型需要因果卷积?3分钟掌握causal-conv1d的完整指南
  • CGraph框架终极指南:构建高性能C++并行计算新范式
  • 告别手动画角线!用JavaScript给Illustrator写个自动拼版插件(附完整源码)
  • 如何构建本地化英雄联盟工具箱:League Akari 技术架构深度解析
  • Snap.Hutao原神工具箱:Windows玩家必备的终极游戏助手
  • 细聊电力绝缘安全帽生产厂家,宿迁市雪中乐价格多少钱 - 工业推荐榜
  • 水下视觉感知革命:FUnIE-GAN的实时增强技术深度解析
  • 2026年江苏地区阻燃、ABS安全帽厂家排名,哪家性价比高 - myqiye
  • 消息队列 RabbitMQ - Kafka 核心概念详解
  • ET框架组件生命周期与Actor消息机制深度解析:如何避免异步编程中的常见陷阱