Codeforces Round 932 (Div. 2) ---- E. Distance Learning Courses in MAC ---- 题解

E. Distance Learning Courses in MAC:

题目大意:

思路解析:

// 对于这种二进制多个数计算答案,我们应该灵敏的想到是否可以通过枚举二进制位来计算答案。

就是对每一个查询找出或和的最大值,那我们想xi 和 yi中哪些位一定会出现在答案中,假设为25 和 31,他们两转为二进制为 (11001) 和 (11111)我们可以想到24一定会进入答案,如果它不是答案的一部分,那无论怎么选都无法满足选择的数大于等于x。那我们这样就可以对[l,r]的答案进行简单计算(这里利用线段树或者树状数组的区间查询即可),那后续剩下的答案怎么办。后续 x 和 y剩下的二进制位为 (00001) 和 (0111)我们发现对r的剩余无论选择哪一位都可以满足大于等于x,那我们可以对于这些剩下的数做一个前缀和的处理,如果有我们一定会把它假如答案。

那么如果假如剩下 有00100这一位,之前粗略的答案中也有00100这一位可以发现我们可以将其转化为00111,后面就可以不用枚举了。

代码实现:

import java.io.*;
import java.math.BigInteger;
import java.util.*;public class Main {static int inf = (int) 1e9;static int mod = 998244353;public static void main(String[] args) throws IOException {int t = f.nextInt();while (t > 0) {solve();t--;}w.flush();w.close();br.close();}static int n;static int[] l;static int[] r;static int[] v;static int maxN = (int) 2e5 + 5;static int[] t = new int[maxN * 2];public static void solve() {n = f.nextInt();l = new int[n + 1];r = new int[n + 1];v = new int[n + 1];for (int i = 1; i <= n; i++) {l[i] = f.nextInt();r[i] = f.nextInt();}fix();int[][] bits = new int[31][n + 1];for (int i = 1; i <= n; i++) {update(i, v[i]);for (int j = 30; j >= 0; j--) {bits[j][i] = bits[j][i-1];if (((r[i] >> j) & 1) == 1) bits[j][i]++;}}int q = f.nextInt();for (int i = 0; i < q; i++) {int x = f.nextInt();int y = f.nextInt();int ans = sum(x, y);for (int j = 30; j >= 0; j--) {int cnt = bits[j][y] - bits[j][x-1] + ((ans >> j) & 1);if (cnt > 1) {ans |= (2 << j) - 1;break;} else if (cnt == 1) {ans |= (1 << j);}}w.print(ans + " ");}w.println();for (int i = 0; i <= n; i++) {t[i] = 0;}}//    public static void fix(){
//        for (int i = 1; i <= n; i++) {
//            if (l[i] == r[i]){
//                v[i] = r[i];
//                l[i] = r[i] = 0;
//                continue;
//            }
//            int pref = (1 << (lg(l[i] ^ r[i]) + 1)) - 1;
//            v[i] = r[i] - (r[i] & pref);
//            r[i] = r[i] & pref;
//            l[i] = l[i] & pref;
//        }
//    }public static void fix() {for (int i = 1; i <= n; ++i) {if (l[i] == r[i]) {v[i] = l[i];l[i] = r[i] = 0;continue;}int pref = (1 << (lg(l[i] ^ r[i]) + 1)) - 1;v[i] = r[i] - (r[i] & pref);r[i] &= pref;l[i] &= pref;}}public static void update(int x, int val) {for (int i = x; i <= n; i += lowbit(i)) {t[i] |= val;}}public static int lg(int x) {for (int i = 30; i >= 0; i--) {if (((x >> i) & 1) == 1) return i;}return 0;}public static int sum(int l, int r) {int res = 0;while (l <= r) {res |= v[r];r--;while (r - lowbit(r) >= l) {res |= t[r];r -= lowbit(r);}}return res;}public static int lowbit(int x) {return x & -x;}static PrintWriter w = new PrintWriter(new OutputStreamWriter(System.out));static Input f = new Input(System.in);static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));static class Input {public BufferedReader reader;public StringTokenizer tokenizer;public Input(InputStream stream) {reader = new BufferedReader(new InputStreamReader(stream), 32768);tokenizer = null;}public String next() {while (tokenizer == null || !tokenizer.hasMoreTokens()) {try {tokenizer = new StringTokenizer(reader.readLine());} catch (IOException e) {throw new RuntimeException(e);}}return tokenizer.nextToken();}public String nextLine() {String str = null;try {str = reader.readLine();} catch (IOException e) {// TODO 自动生成的 catch 块e.printStackTrace();}return str;}public int nextInt() {return Integer.parseInt(next());}public long nextLong() {return Long.parseLong(next());}public Double nextDouble() {return Double.parseDouble(next());}public BigInteger nextBigInteger() {return new BigInteger(next());}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/587729.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爬虫 红网时刻 获取当月指定关键词新闻 并存储到CSV文件

目标网站&#xff1a;红网 爬取目的&#xff1a;为了获取某一地区更全面的在红网已发布的宣传新闻稿&#xff0c;同时也让自己的工作更便捷 环境&#xff1a;Pycharm2021&#xff0c;Python3.10&#xff0c; 安装的包&#xff1a;requests&#xff0c;csv&#xff0c;bs4&…

非关系型数据库(缓存数据库)redis的高可用(持久化)

目录 1.redis的高可用 2.Redis持久化 1.Redis 提供两种方式进行持久化 2.RDB持久化 2.1触发条件 2.1.1手动触发 2.1.2自动触发 2.1.3其他自动触发机制 2.2执行流程 ​编辑 2.3 启动时加载 3.AOF持久化 3.1开启AOF 3.2 执行流程 3.2.1append——命令追加 3.…

【OpenCV-颜色空间】

OpenCV-颜色空间 ■ RGB■ BGR■ HSV■ HSL■ HUE■ YUV ■ RGB ■ BGR BGR 就是RGB R和B调换位置。 OpenCV 默认使用BGR ■ HSV ■ HSL ■ HUE ■ YUV

Springboot集成knife4j (swagger)

1、添加依赖 在pom.xml 文件中添加 knife4j-spring-boot-starter 的依赖 <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>3.0.3</version> </depe…

【JavaScript】JS高级语法

目录 1.变量与函数 1.1作用域 1.2定义变量 1.3作用域链 1.4闭包 1.5预解析 1.6let提升 1.7函数参数 1.8箭头函数 2.解构赋值 3.1数组解构 3.2对象解构 3.对象 4.1字面量创建对象 4.2构造函数 4.2.1自定义构造函数 4.2.2静态成员和实例成员 4.数据类型 4.1引…

游戏引擎中的物理系统

一、物理对象与形状 1.1 对象 Actor 一般来说&#xff0c;游戏中的对象&#xff08;Actor&#xff09;分为以下四类&#xff1a; 静态对象 Static Actor动态对象 Dynamic Actor ---- 可能受到力/扭矩/冲量的影响检测器 TriggerKinematic Actor 运动学对象 ---- 忽略物理法则…

EFK(elasticsearch+filebeat+kibana)日志分析平台搭建

本文是记录一下EFK日志平台的搭建过程 项目背景&#xff1a; 此次搭建的日志分析平台主要是采集服务器上的java服务的log日志(输出的日志已经是json格式)&#xff0c;这些日志都已经按照不同环境输出到/home/dev /home/test1 /home/test2 目录下了&#xff0c;按照不同的应…

Taro + vue3 小程序封装标题组件

分为没有跳转页面的title组件和 有跳转页面的title组件 我们可以把这个封装成一个组件 直接上代码 <template><div class"fixed-title-container"><div class"box"><div class"icon" v-if"isShow" click"…

Topaz Video AI for Mac v5.0.0激活版 视频画质增强软件

Topaz Video AI for Mac是一款功能强大的视频处理软件&#xff0c;专为Mac用户设计&#xff0c;旨在通过人工智能技术为视频编辑和增强提供卓越的功能。这款软件利用先进的算法和深度学习技术&#xff0c;能够自动识别和分析视频中的各个元素&#xff0c;并进行智能修复和增强&…

【JavaWeb】Day31.SpringBootWeb请求响应——分层解耦(二)

3.IOC&DI 3.1 IOC&DI入门 完成Controller层、Service层、Dao层的代码解耦 思路&#xff1a; 1. 删除Controller层、Service层中new对象的代码 2. Service层及Dao层的实现类&#xff0c;交给IOC容器管理 3. 为Controller及Service注入运行时依赖的对象 Controller程序…

Appium无线自动化实用教程

文章目录 简介核心特点工作原理使用Appium进行自动化测试的一般步骤 环境设置安装和启动Appium Server使用Node.js和npm安装Appium Server&#xff1a;启动Appium Server:命令行启动使用Appium Desktop安装和启动Appium Server&#xff1a;使用代码启动appium server 编写测试代…

勒索病毒最新变种.rmallox勒索病毒来袭,如何恢复受感染的数据?

导言&#xff1a; 随着信息技术的飞速发展&#xff0c;网络安全问题日益突出&#xff0c;其中勒索病毒便是近年来备受关注的网络安全威胁之一。在众多勒索病毒中&#xff0c;.rmallox勒索病毒以其独特的传播方式和强大的加密能力&#xff0c;给广大用户带来了极大的困扰。本文…