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

硝基甲苯之魇

题目链接:https://ac.nowcoder.com/acm/contest/95323/K

题意:

给定一个长度为n的数组,求所有[l,r]区间xor等于区间gcd的个数(l<r)

思路:

不妨固定左端点l,a[l]=x,发现右端点在扩增的时候,区间gcd最多变化logx次,因此可以二分出区间gcd的变化点p

同时用ST表求出区间[p1,p2]gcd大小,设为g,那么区间pre[r] xor pre[l-1] = g => pre[r]= g xor pre[l-1]

(其中r属于[p1,p2]且r不能为l),通过map套vector上二分能求出这段区间中pre[r]的数的个数

int Log[maxn];
void init(){Log[1]=0;for(int i=2;i<=2e5;i++){Log[i] =Log[i/2]+1;}
}void solve(){int n;cin>>n;vector<int>a(n+1);rep(i,1,n)cin>>a[i];vector<vector<int>>f(n+1,vector<int>(27));rep(i,1,n)f[i][0]=a[i];rep(j,1,26){for(int i=1;i+(1ll<<j)-1<=n;i++){f[i][j]=__gcd(f[i][j-1],f[i+(1ll<<j-1)][j-1]);}}auto query =[&](int l,int r)->int{int k=Log[r-l+1];return __gcd(f[l][k],f[r-(1ll<<k)+1][k]);};vector<int>pre(n+1);rep(i,1,n){pre[i]=(pre[i-1]^a[i]);}map<int,vector<int>>cnt;rep(i,1,n)cnt[pre[i]].pb(i);int ans=0;auto cal=[&](int x,int lt,int rt)->int{auto itl=lower_bound(cnt[x].begin(),cnt[x].end(),lt);int left=0;if(itl==cnt[x].end())return 0;else left=lower_bound(cnt[x].begin(),cnt[x].end(),lt)-cnt[x].begin();auto itr=upper_bound(cnt[x].begin(),cnt[x].end(),rt);if(itr==cnt[x].end()){int m=cnt[x].size();return (m-left);}else{int right=upper_bound(cnt[x].begin(),cnt[x].end(),rt)-cnt[x].begin();return (right-left);}};for(int l=1;l<=n;l++){int L=l,R=n;int u=a[l];while(L<=n){int tmp=L;int ed=-1;while(L<=R){int mid = L+R>>1;if(query(l,mid)==u){L=mid+1;ed=mid;}else R=mid-1;}if(ed==-1)break;int x= (pre[l-1]^u);ans += cal(x,max(l+1,tmp),ed);if(ed+1>n)break;u=query(l,ed+1);L=ed+1;R=n;}}cout<<ans<<endl;
}
http://www.rkmt.cn/news/9656.html

相关文章:

  • 关于串口通信(232、485、422)和常见问题,一篇文章就给你说清楚~
  • day13-Trae之一键换脸APP开发03
  • 摩尔投票法
  • 基于STM32平台的ADS1292心电采集驱动程序
  • C#开发的等待界面类库例子 - 开源研究系列文章
  • 邀您参加丨云栖大会中企出海技术分论坛
  • 国产化Excel开发组件Spire.XLS教程:Python 写入 Excel 文件,数据写入自动化实用指南
  • 【IEEE出版】2025年智慧物联与电子信息工程国际学术会议(IoTEIE 2025)
  • 9.22 机房练习
  • 视频调色神器!CyberLink ColorDirector:从入门到专业的视频色彩魔法工具
  • P4951 [USACO01OPEN] Earthquake 题解
  • 用ida插件快速审计函数调用
  • schematool -initSchema -dbType mysql
  • tsx 图论选讲
  • 阿里云通义MoE全局均衡技巧:突破专家负载失衡的革新之道
  • .NET Polly 全面指南:从5W2H维度深度解析
  • Day19构造器详解
  • 【院士报告|EI检索稳定|大连理工大学主办】第四届能源与动力工程国际学术会议(EPE 2025)
  • 20250509_信安一把梭_黑客
  • 达芬奇标记测量线文字标题动画预设(Tracked Measuring Lines)使用指南
  • css样式:button边框贪吃蛇加载效果
  • 什么是NIC(网络接口卡)?
  • 视频剪辑效率翻倍!CyberLink PowerDirector 从入门到专业的全能解决方案
  • SAP-ABAP中STOP,EXIT,CHECK,RETURN,CONTINUE,LEAVE,REJECT的区别
  • Arduino ide 软件 不建议大家使用 缺点多多
  • Refit Consul
  • 麒麟服务器操作系统查询可用的内核版本以及安装和降级命令
  • 20250406_信安一把梭_测试篇
  • 3123004806软件工程查重项目
  • DeepSeek大模型混合专家模型,DeepSeekMoE 重构 MoE 训练逻辑 - 教程