Codeforces Round 940 (Div. 2) and CodeCraft-23 D. A BIT of an Inequality

A BIT of an Inequality

题目描述

给你一个数组 a 1 , a 2 , … , a n a_1, a_2, \ldots, a_n a1,a2,,an 。求这样的图元( x , y , z x, y, z x,y,z )的个数:

  • 1 ≤ x ≤ y ≤ z ≤ n 1 \leq x \leq y \leq z \leq n 1xyzn , 和
  • f ( x , y ) ⊕ f ( y , z ) > f ( x , z ) f(x, y) \oplus f(y, z) > f(x, z) f(x,y)f(y,z)>f(x,z) .

我们定义 f ( l , r ) = a l ⊕ a l + 1 ⊕ … ⊕ a r f(l, r) = a_l \oplus a_{l + 1} \oplus \ldots \oplus a_{r} f(l,r)=alal+1ar ,其中 ⊕ \oplus 表示 bitwise XOR。

输入描述

第一行包含一个整数 t t t ( 1 ≤ t ≤ 1 0 4 1 \leq t \leq 10^4 1t104 ) - 测试用例数。

每个测试用例的第一行包含一个整数 n n n ( 1 ≤ n ≤ 1 0 5 1 \leq n \leq 10^5 1n105 )。

每个测试用例的第二行包含 n n n 个整数 a 1 , a 2 , … , a n a_1, a_2, \ldots, a_n a1,a2,,an ( 1 ≤ a i ≤ 1 0 9 1 \leq a_i \leq 10^9 1ai109 )。

保证所有测试用例中 n n n 的总和不超过 1 0 5 10^5 105

输出描述

对于每个测试用例,在一行中输出一个整数 – 描述的图元的组数。

样例输入

3
3
6 2 4
1
3
5
7 3 7 2 1

样例输出

4
0
16

原题

CF——传送门

思路

显然根据异或运算的交换律, f ( x , y ) ⊕ f ( y , z ) > f ( x , z ) f(x, y) \oplus f(y, z) > f(x, z) f(x,y)f(y,z)>f(x,z) 等价于 f ( x , z ) ⊕ a y > f ( x , z ) f(x, z) \oplus a_y > f(x, z) f(x,z)ay>f(x,z)。那么,问题就可以转化为对于 a 1 a_1 a1 a n a_n an 的每个 a i a_i ai,其与 f ( x , z ) f(x, z) f(x,z) 进行异或运算是否会使结果变小。如果能使结果变小,则将该方案统计到答案中。而对于异或后对结果的影响,我们只需要考虑 a i a_i ai 的最高位的 1,若该位在左式即 f ( x , y ) ⊕ f ( y , z ) f(x, y) \oplus f(y, z) f(x,y)f(y,z) 中的异或结果为 1,则将该方案统计进答案中。

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;const int maxn = 1e5 + 6;
const int maxbit = 30;// 第i个元素,第j+1个bit位,前缀以及后缀异或结果为k(0或1)
int prefix[maxn][maxbit][2]; // 该条件下 包含第i-1个元素的前缀的个数
int suffix[maxn][maxbit][2]; // 该条件下 包含第i+1个元素的后缀的个数int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int t;cin >> t;while (t--){int n;cin >> n;vector<int> a(n + 1);for (int i = 1; i <= n; i++){cin >> a[i];}// dp转移for (int j = 0; j < 30; j++){// 初始化prefix[0][j][0] = 0;prefix[0][j][1] = 0;suffix[n + 1][j][0] = 0;suffix[n + 1][j][1] = 0;for (int i = 1; i <= n; i++){int bit = (a[i] >> j) & 1; // 第j+1个bit位是1或是0for (int k = 0; k <= 1; k++){prefix[i][j][k] = (bit == k) + prefix[i - 1][j][k ^ bit];}}for (int i = n; i >= 1; i--){int bit = (a[i] >> j) & 1; // 第j+1个bit位是1或是0for (int k = 0; k <= 1; k++){suffix[i][j][k] = (bit == k) + suffix[i + 1][j][k ^ bit];}}}ll ans = 0; // 统计个数for (int i = 1; i <= n; i++){int highbit = -1; // 当前元素bit位为1的最高位置for (int j = 0; j < 30; j++){if ((a[i] >> j) & 1)highbit = j;}ans += 1LL * prefix[i - 1][highbit][1] * (suffix[i + 1][highbit][0] + 1);ans += 1LL * (prefix[i - 1][highbit][0] + 1) * suffix[i + 1][highbit][1];}cout << ans << '\n';}return 0;
}

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

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

相关文章

汽车灯罩一般都是用什么材质做的?汽车车灯的灯罩如果破损破裂破洞了要怎么修复?

汽车灯罩一般都是用什么材质做的&#xff1f; 汽车灯罩一般使用的主要材质是聚碳酸酯&#xff08;PC&#xff09;和丙烯酸酯&#xff08;PMMA&#xff09;这两种塑料。这两种材料具有良好的透明性、耐候性和耐冲击性&#xff0c;因此非常适合用于汽车灯罩的制造。 聚碳酸酯&am…

小程序支付的款项流转与到账时间

商家做小程序&#xff0c;最关心的是客户通过小程序下单支付的钱&#xff0c;是怎么样的流转状态以及最终到哪里。因此&#xff0c;本文将详细解析款项最终流向何处以及多久能够到账。 一、小程序支付的款项流向 当用户在小程序内完成支付后&#xff0c;款项并不会直接到达商…

5月8日学习记录

_[FBCTF2019]RCEService&#xff08;preg_match函数的绕过&#xff09; 涉及知识点&#xff1a;preg_match函数绕过&#xff0c;json的格式&#xff0c;正则回溯 打开环境&#xff0c;要求用json的格式输入 搜索学习一下json的语法规则 数组&#xff08;Array&#xff09;用方括…

Map-Reduce是个什么东东?

MapReduce是一种用于使用并行分布式算法在集群计算机上处理大型数据集的编程模型及其相关实现。这一概念首先由Google普及&#xff0c;并随后作为Apache Hadoop项目的一部分开源发布。 MapReduce的基本工作流程&#xff1a; 映射(Mapping)&#xff1a;这是第一阶段&#xff0c…

制造版图大变革!逾10座晶圆厂蓄势待发 | 百能云芯

在全球半导体产业的激烈竞争和市场需求的复杂波动中&#xff0c;晶圆厂建设热潮正在美国兴起&#xff0c;这一波建设浪潮的核心动力之一&#xff0c;便是美国政府推出的《芯片与科学法案》所承诺的巨额补贴&#xff0c;旨在提升美国在全球半导体行业的竞争力。 当地时间4月25日…

嵌入式—模块代码(一)

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 程序结构GPIO操作UART操作接收逻辑发送 以下模板代码均基于官方2023.07.17版本。 程序结构 #include "Config.h" #inc…

JSP技术讲解

目录 1、JSP简介 2、JSP体验 3、JSP运行原理 4、JSP基本语法 5、JSP指令 6、JSP内置九大对象 7、JSP标签 8、JSP配置 9、JSP排错 10、总结 在前面的Servlet学习中发现Servlet本质是一个java程序&#xff0c;因此Servlet更加擅长编写程序的业务逻辑&#xff0c;而如果要…

部署kafka后启动报错(坑):无法指定被请求的地址

启动kafka后报错&#xff1a;org.apache.kafka.common.KafkaException: Socket server failed to bind to 127.0.0.1:9092: 无法指定被请求的地址 1、编辑配置文件 vim config/server.properties 2、在listeners PLAINTEXT://your.host.name:9092下方添加服务器内外网地址配…

shpfile转GeoJSON;控制shp转GeoJSON的精度;如何获取GeoJSON;GeoJSON是什么有什么用;GeoJSON结构详解(带数据示例)

目录 一、GeoJSON是什么 二、GeoJSON的结构组成 2.1、点&#xff08;Point&#xff09;数据示例 2.2、线&#xff08;LineString&#xff09;数据示例 2.3、面&#xff08;Polygon&#xff09;数据示例 2.4、特征&#xff08;Feature&#xff09;数据示例 2.5、特征集合&…

Hass哈斯数控数据采集网络IP配置设置

机床数据采集&#xff08;MDC&#xff09;允许你使用Q和E命令通过网络接口或选项无线网络从控制系统提取数据。设置143支持该功能&#xff0c;并且指定控制器使用这个数据端口。MDC是一个需要一台附加计算机发送请求&#xff0c;解释说明和存储机床数据的软件功能。这个远程计算…

android 预加载进程

目录 一.背景 二.实现 1. 创建预加载服务类 2.清单文件中注册并制定 android:process 要预加载的进程 3.开启和停止 一.背景 做阅读器独立进程时&#xff0c;打开阅读器阅读页面所在的Activity&#xff0c;会出现白屏或黑屏 也就是说从一个进程activity跳转另一个进程的a…

【计算机毕业设计】基于SSM++jsp的电子竞技管理平台【源码+lw+部署文档+讲解】

目录 1 绪论 1.1 研究背景 1.2 目的和意义 1.3 论文结构安排 2 相关技术 2.1 SSM框架介绍 2.2 B/S结构介绍 2.3 Mysql数据库介绍 3 系统分析 3.1 系统可行性分析 3.1.1 技术可行性分析 3.1.2 经济可行性分析 3.1.3 运行可行性分析 3.2 系统性能分析 3.2.1 易用性指标 3.2.2 可…

明明是工作经验越久越吃香,为什么程序员却不是?

一般3年左右经验的程序员&#xff0c;了解到了这个行业的一些上升渠道和方法&#xff0c;其实也能发现&#xff0c;程序员也能得熬资历的&#xff0c;说通俗点也是越老越值钱。 比如当下有1年经验和3年经验的程序员&#xff0c;哪怕都是小公司背景&#xff0c;会发现工作年限越…

JavaScript数字分隔符

● 如果现在我们用一个很大的数字&#xff0c;例如2300000000&#xff0c;这样真的不便于我们进行阅读&#xff0c;我们希望用千位分隔符来隔开它&#xff0c;例如230,000,000; ● 下面我们使用_当作分隔符来尝试一下 const diameter 287_266_000_000; console.log(diameter)…

负载或反向代理服务器如何配置XFF以获取终端真实IP

文章目录 XFF介绍工作原理注意事项 配置方式1. Nginx2. HAProxy3. F5 BIG-IP4. Radware注意事项 本文介绍如何在反向代理或负载中配置XFF&#xff0c;方便后端服务获取请求来源的真实IP XFF介绍 X-Forwarded-For&#xff08;简称XFF&#xff09;是一个非标准的HTTP头部字段&a…

C++学习————第十天(string的基本使用)

1、string 对象类的常见构造 (constructor)函数名称 功能说明&#xff1a; string() &#xff08;重点&#xff09; 构造空的string类对象&#xff0c;即空字符串 string(const char* s) &#xff08;重点&#xff09;…

PostgreSQL的学习心得和知识总结(一百四十一)|深入理解PostgreSQL数据库数据库角色的使用及预定义角色的原理

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《PostgreSQL数据库内核分析》 2、参考书籍&#xff1a;《数据库事务处理的艺术&#xff1a;事务管理与并发控制》 3、PostgreSQL数据库仓库…

Mysql 基础 - 常见 子句

算数运算符 > < > < !/<> 逻辑运算符 3i in is null is not null 2l limit like 2o or 、order by 1a and ib between and 1n not and、or 、not、 in、 orderby、 limit、 like、 between...and、 is null 、is not null

【C++】C++11--- 列表初始化|关键字

目录 前言 列表初始化 创建对象时的列表初始化 单参数隐式类型转换 多参数的隐式类型转换 new表达式中使用列表初始化 列表初始化适用于STL 容器 模板类initializer_list 关键字auto 关键字decltype 关键字nullptr 前言 C标准10年磨一剑&#xff0c;第二个真正意义上…

学习软考----数据库系统工程师20

数据库技术基础 主要内容如下&#xff1a; DBMS的功能和特点 课本上&#xff1a; 数据库系统的三级模式结构 数据模型 E-R图