使用C++,将以下内容翻译为中文:在给定数组的索引范围内进行按位与的查询

使用c++,将以下内容翻译为中文:在给定数组的索引范围内进行按位与的查询

在本文中,我们给出了一个问题,其中给定一个整数数组,我们的任务是找到给定范围的按位与,例如 7minus;

Input: arr[ ] = {1, 3, 1, 2, 32, 3, 3, 4, 4}, q[ ] = {{0, 1}, {3, 5}}Output:10 01 AND 31 = 123 AND 34 AND 4 = 00Input: arr[ ] = {1, 2, 3, 4, 510, 10 , 12, 16, 8}, q[ ] = {{0, 42}, {1, 33, 4}}Output:0 80

我们将首先应用暴力方法并检查其时间复杂度。如果我们的时间复杂度不够好,我们会尝试开发更好的方法。

暴力方法

在给定的方法中,我们将遍历给定的范围并找到我们的方法回答并打印。

示例

#include using namespace std;int main() {   int ARR[] = { 10, 10 , 12, 16, 8 };   int n = sizeof(ARR) / sizeof(int); // size of our array   int queries[][2] = { {0, 2}, {3, 4} }; // given queries   int q = sizeof(queries) / sizeof(queries[0]); // number of queries   for(int i = 0; i < q; i++) { // traversing through all the queries      long ans = 1LL << 32;      ans -= 1; // making all the bits of ans 1      for(int j = queries[i][0]; j <= queries[i][1]; j++) // traversing through the range         ans &= ARR[j]; // calculating the answer      cout << ans << "n";   }   return 0;}

输出

80

在这种方法中,我们对每个查询的范围运行一个循环,并按位打印它们的集合,因此我们程序的整体复杂性变为O(N*Q),其中 N 是数组的大小,Q 是我们现在的查询数量,您可以看到这种复杂性不适合更高的约束,因此我们将针对此问题提出更快的方法。

立即学习“C++免费学习笔记(深入)”;

高效方法 h2>

在这个问题中,我们预先计算数组的前缀位数,通过检查给定范围内设置位的贡献来计算给定范围的按位与。

示例

#include using namespace std;#define bitt 32#define MAX (int)10e5int prefixbits[bitt][MAX];void bitcount(int *ARR, int n) { // making prefix counts   for (int j = 31; j >= 0; j--) {      prefixbits[j][0] = ((ARR[0] >> j) & 1);      for (int i = 1; i < n; i++) {         prefixbits[j][i] = ARR[i] & (1LL << j);         prefixbits[j][i] += prefixbits[j][i - 1];      }   }   return;}int check(int l, int r) { // calculating the answer   long ans = 0; // to avoid overflow we are taking ans as long   for (int i = 0; i < 32; i++){      int x;      if (l == 0)         x = prefixbits[i][r];      else         x = prefixbits[i][r] - prefixbits[i][l - 1];      if (x == r - l + 1)         ans = ans | 1LL << i;      }   return ans;}int main() {   int ARR[] = { 10, 10 , 12, 16, 8 };   int n = sizeof(ARR) / sizeof(int); // size of our array   memset(prefixbits, 0, sizeof(prefixbits)); // initializing all the elements with 0   bitcount(ARR, n);   int queries[][2] = {{0, 2}, {3, 4}}; // given queries   int q = sizeof(queries) / sizeof(queries[0]); // number of queries   for (int i = 0; i < q; i++) {      cout << check(queries[i][0], queries[i][1]) << "n";   }   return 0;}

输出

20

在这种方法中,我们使用恒定的时间来计算查询,从而将时间复杂度从 O(N*Q) 大大降低到 O(N),其中 N 是现在给定数组的大小。该程序也可以适用于更高的约束。

上述代码的说明

在这种方法中,我们计算所有前缀位数并将其存储在索引中。现在,当我们计算查询时,我们只需要检查某个位的计数是否与范围中存在的元素数量相同。如果是,我们在 x 中将此位设置为 1,如果否,我们保留该位,就好像给定范围中存在的任何数字都具有该位 0,因此该位的整个按位 AND 将为零,这就是如何我们正在计算按位与。

结论

在本文中,我们解决了一个问题,枚举给定索引范围 [L, R] 中按位与的所有查询大批。我们还学习了解决这个问题的C++程序以及解决这个问题的完整方法(正常且高效)。我们可以用其他语言比如C、java、python等语言来编写同样的程序。我们希望这篇文章对您有所帮助。

以上就是使用C++,将以下内容翻译为中文:在给定数组的索引范围内进行按位与的查询的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1443862.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 20:39:59
下一篇 2025年12月14日 04:59:58

相关推荐

  • PHP之ThinkPHP有几种查询?

    ThinkPHP有5种核心查询方式:1.基础链式查询,2.原生SQL查询,3.视图查询,4.关联查询(含预加载),5.查询作用域;其中链式+关联+作用域覆盖90%以上需求。 ThinkPHP 的查询方式主要围绕模型(Model)和查询构建器(Query Builder)展开,常见且实用的有 5 种核…

    2025年12月13日
    000
  • SQL如何查询不等于某个结果 查询结果排除的实用SQL写法

    要选择合适的“不等于”操作符,需根据排除条件的复杂程度来决定。!=或适用于排除单个值;not in适用于排除多个值,但需注意null陷阱;not exists适用于涉及子查询的复杂条件,并具有更好的性能优势。为优化“不等于”查询性能,可采取索引优化、避免在where子句中使用函数、重写查询以及使用覆…

    2025年12月3日 数据库
    000
  • mongodb查询以什么开头的?

    使用正则表达式可查询MongoDB中字段以特定字符串开头的数据,如db.collection.find({ name: /^John/ })匹配name字段以”John”开头的文档,加i标志可忽略大小写,为字段创建索引能提升查询性能。 在 MongoDB 中,如果你想查询某个…

    2025年12月3日
    000
  • mysql 查询指定日期时间内容sql查询语句

    如果是月份就是当前的月减去你要统计的时间如我要查询数据库中从今天起往前三个月的所有记录,我们的语句如下:mktime(date(\’h\’),date(\’i\’),date(\’s\’),date(\’m\&#82…

    数据库 2025年12月2日
    000
  • mysql查询多少秒内的数据显示

    mysql查询多少秒内的数据显示

    数据库 2025年12月2日
    000
  • mysql 日期相加减sql查询语句

    工作需要需要查询本月,本月来的数据进行排行,仔细一看数据库在数据库里保存的日期格式是2010-02-23 14:2:3这种类型的,这样我以为的按秒存在数据库的查询方法就不行了,在网上找到一款日期相加减sql函数 datediff(now,oldtime)。测试了一下完全可以用下面我

    数据库 2025年12月2日
    100
  • mongodb奇怪模糊查询问题

    db.keke.insert({name:”hky”}); db.keke.find() { “_id” : ObjectId(“50222ec21905597a6291d35c”), “name” : …

    2025年12月2日
    000
  • Mysql中查询与删除重复行的一些复杂的sql语句

    这篇文章主要介绍了mysql一些复杂的sql语句(查询与删除重复的行),需要的朋友可以参考下 1.查找重复的行 SELECT * FROM blog_user_relation a WHERE (a.account_instance_id,a.follow_account_instance_id) …

    2025年12月2日
    000
  • Mysql一些复杂的sql语句(查询与删除重复的行)

    这篇文章主要介绍了mysql一些复杂的sql语句(查询与删除重复的行),需要的朋友可以参考下 1.查找重复的行 SELECT * FROM blog_user_relation a WHERE (a.account_instance_id,a.follow_account_instance_id) …

    2025年12月2日
    000
  • mongoDB 多重数组查询的实例介绍

    这篇文章主要介绍了mongodb 多重数组查询(angularjs绑定显示 nodejs),需要的朋友可以参考下 核心代码: js代码 var Lesson = Schema({ lessonName: String, intr: String, creTime: Date, sort: Strin…

    2025年12月2日
    000
  • mysql中的跨库关联查询方法详解

    这篇文章主要介绍了mysql中的跨库关联查询方法,需要的朋友可以参考下 业务场景:关联不同数据库中的表的查询 比如说,要关联的表是:机器A上的数据库A中的表A && 机器B上的数据库B中的表B。 这种情况下,想执行“select A.id,B.id from A left join …

    2025年12月2日 数据库
    000
  • mysql 临时表和内存表创建 查询 删除以及注意事项

    mysql 临时表和内存表创建 查询 删除以及注意事项临时表和内存表的ENGINE 不同,临时表默认的是MyISAM,而内存表是MEMORY ,临时表只对当前会话可见,连接断开时,自动删除!

    数据库 2025年12月2日
    000
  • ACCESS的参数化查询,附VBSCRIPT(ASP)和C#(ASP.NET)函数第1/2页

    ACCESS的参数化查询,附VBSCRIPT(ASP)和C#(ASP.NET)函数 最近因项目需要用ACCESS做数据库开发WEB项目 看论坛上还许多人问及ACCESS被注入的安全问题 许多人解决的方法仍然是用Replace替换特殊字符,然而这样做也并没有起到太大做用 今天我就把我用ACCESS参数…

    数据库 2025年12月2日
    000
  • MySQL子查询的详细介绍

     mysql是一个关系型数据库管理系统,由瑞典mysqlab公司开发,目前属于oracle旗下产品。mysql是最流行的关系型数据库管理系统之一,在web应用方面,mysql是最好的rdbms(relationaldatabasemanagementsystem,关系数据库管理系统)应用软件。   …

    2025年12月2日 数据库
    000
  • MySQL自动记录慢查询日志实例

    实验环境:os x ei captian + mysql 5.7 一、配置MySQL自动记录慢查询日志 查看变量,也就是配置信息 show (global) variables like ‘%slow_query%’ 修改变量: set global 变量名 = 值 与慢查询日志有关的变量: 是否开…

    2025年12月2日 数据库
    000
  • MySQL查询语句之复杂查询

    MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。在MySQL中经常会有很多复杂的查询,为了节约大家的时间,小编总结了一些经常用到的复杂查询。 mysql复杂查询 一、分组查询: 1、关键字:GROUP BY  2…

    2025年12月2日 数据库
    000
  • 怎样用一条SQL语句查询不同的数据库

    这次给大家带来怎样用一条SQL语句查询不同的数据库,一条SQL语句查询不同的数据库的注意事项有哪些,下面就是实战案例,一起来看一下。 需求:一条SQL语句从多个数据库查询出相关联的结果,输出到客户端 调查:spring框架可以配置多数据源;sql也可以将多个数据库附加到一个主数据库下 解决办法:用A…

    2025年12月2日
    000
  • MYSQL查询时间数据

    利用mysql查询时间数据在平常使用php中经常会遇到,本篇将介绍多种时间数据的查询。 mysql查询本季度 今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT *FROM表名WHERE TO_DAYS( NOW(…

    2025年12月2日
    000
  • mysql子查询简单介绍

    子%ign%ignore_a_1%re_a_1%基本含义,就是在一个查询语句(select语句)中的内部,某些位置,又出现的“查询语句”。本文主要和大家分享mysql子查询简单介绍,希望能帮助到大家。 例: 修改后: 如果将该“select 5000”的子查询语句,替换为“select出来所有商品的…

    2025年11月28日 数据库
    000
  • 分页查询的使用详解

    这次给大家带来分页查询的使用详解,使用分页查询的注意事项有哪些,下面就是实战案例,一起来看一下。 作用:把行按照字段分组 Select column, .. from table_name group by column1, column2;使用场景:常见于统计场合,计算平均分,统计数据量等查询每个…

    2025年11月28日
    000

发表回复

登录后才能评论
关注微信