题意

给定$n$个数,求有最长的区间长度使得区间内数的按位或小于等于给定$v$


二分区间长度,线段树处理出区间或,对每一位区间判断

时间复杂度$O(n\log n \log n)$

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=100005;
int t,n,v,a[100005],ans;
int lch[4*N],rch[4*N];
LL seg_or[4*N];
void pushup(int x) {seg_or[x]=seg_or[x<<1]|seg_or[x<<1|1];}
void build(int x,int l,int r) {
lch[x]=l;rch[x]=r;seg_or[x]=0;
if(l==r) {
seg_or[x]=a[l];return;
}
int mid=(l+r)/2;
build(x<<1,l,mid);
build(x<<1|1,mid+1,r);
pushup(x);
}
int query(int x, int l, int r) {
if(l<=lch[x]&&r>=rch[x]) {return seg_or[x];}
int mid = (lch[x]+rch[x])/2;
if(r<=mid) return query(x<<1,l,r);
else if(l>mid) return query(x<<1|1,l,r);
else return query(x<<1,l,mid)|query(x<<1|1,mid+1,r);
}
bool check(int x) {
for(int i=1;i<=n;++i) {
if(i+x-1<=n&&query(1,i,i+x-1)<=v) { return true; }
}
return false;
}
int main() {
freopen("wifi.in","r",stdin);
scanf("%d",&t);
while(t--) {
scanf("%d%d",&n,&v);
for(int i=1;i<=n;++i) scanf("%d",&a[i]);
build(1,1,n);
int L=1,R=n;ans=0;
while(L<=R) {
int mid=(L+R)/2;
if(check(mid)) {
ans=mid;L=mid+1;
}else {
R=mid-1;
}
}
cout<<ans<<endl;
}
return 0;
}

最新文章

  1. 北京培训记day3
  2. c++ 解包tar
  3. 日志框架只打印出Mybatis SQL的配置
  4. JAVA - 优雅的记录日志(log4j实战篇)
  5. php简单实用的操作文件工具类(创建、移动、复制、删除)
  6. Cycles_per_instruction
  7. 天使投资、VC 以及 PE 的区别是什么?
  8. Win8节省C盘空间攻略
  9. firefox必备扩展
  10. redis 实例
  11. ImportError: No module named cv2 解决方法
  12. maven私服nexus搭建(windows)
  13. python 中的csv读写
  14. Spring Boot实战笔记(四)-- Spring常用配置(事件Application Event)
  15. JDK动态代理浅析
  16. java学习(二)
  17. java 工具
  18. 当使用 SelfHost 的 OWIN 承载 SignalR 时,重启 OWIN 后,SignalR 不能正常工作
  19. Beta冲刺(5/5)(麻瓜制造者)
  20. k8s+Jenkins+GitLab-自动化部署asp.net core项目

热门文章

  1. C#中回调函数的使用方法和区别
  2. ASP.NET MVC深入浅出系列(持续更新) ORM系列之Entity FrameWork详解(持续更新) 第十六节:语法总结(3)(C#6.0和C#7.0新语法) 第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字 各种通讯连接方式 设计模式篇 第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借
  3. Java设计模式(九)责任链模式 命令模式
  4. dede中可以用系统设置中的添加新变量来调用频繁改变的文字内容
  5. linux下安装redis报错问题。
  6. python爬虫,从hao123爬取网址信息
  7. iOS开发 两个内存错误的一般处理方法
  8. python 基础2.5 循环中continue与breake用法
  9. WebApi基础
  10. Spring和ActiveMQ整合的完整实例