【Codeforces】Gym 101608G WiFi Password 二分+线段树
2024-09-04 13:15:22
题意
给定$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;
}
最新文章
- 北京培训记day3
- c++ 解包tar
- 日志框架只打印出Mybatis SQL的配置
- JAVA - 优雅的记录日志(log4j实战篇)
- php简单实用的操作文件工具类(创建、移动、复制、删除)
- Cycles_per_instruction
- 天使投资、VC 以及 PE 的区别是什么?
- Win8节省C盘空间攻略
- firefox必备扩展
- redis 实例
- ImportError: No module named cv2 解决方法
- maven私服nexus搭建(windows)
- python 中的csv读写
- Spring Boot实战笔记(四)-- Spring常用配置(事件Application Event)
- JDK动态代理浅析
- java学习(二)
- java 工具
- 当使用 SelfHost 的 OWIN 承载 SignalR 时,重启 OWIN 后,SignalR 不能正常工作
- Beta冲刺(5/5)(麻瓜制造者)
- k8s+Jenkins+GitLab-自动化部署asp.net core项目
热门文章
- C#中回调函数的使用方法和区别
- ASP.NET MVC深入浅出系列(持续更新) ORM系列之Entity FrameWork详解(持续更新) 第十六节:语法总结(3)(C#6.0和C#7.0新语法) 第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字 各种通讯连接方式 设计模式篇 第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借
- Java设计模式(九)责任链模式 命令模式
- dede中可以用系统设置中的添加新变量来调用频繁改变的文字内容
- linux下安装redis报错问题。
- python爬虫,从hao123爬取网址信息
- iOS开发 两个内存错误的一般处理方法
- python 基础2.5 循环中continue与breake用法
- WebApi基础
- Spring和ActiveMQ整合的完整实例