正题

题目链接:https://www.luogu.com.cn/problem/CF1322B


题目大意

给出nnn个数字aia_iai​求
⨁i=1n⨁j=i+1n(ai+aj)\bigoplus _{i=1}^n\bigoplus _{j=i+1}^n(a_i+a_j)i=1⨁n​j=i+1⨁n​(ai​+aj​)

1≤n≤4×105,1≤ai≤1071\leq n\leq 4\times 10^5,1\leq a_i\leq 10^71≤n≤4×105,1≤ai​≤107


解题思路

分位考虑的话,先把每个位置更高位的给去掉,此时两个数字和这位为111的情况当且仅当他们的和在[2k,2k+1)[2^k,2^{k+1})[2k,2k+1)或者[2k+1+2k,2k+2)[2^{k+1}+2^k,2^{k+2})[2k+1+2k,2k+2)这两个区间。

双指针扫两次就好了。

时间复杂度O(nlog⁡ai)O(n\log a_i)O(nlogai​)


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=4e5+10;
ll n,a[N],b[N],sum;
signed main()
{scanf("%lld",&n);for(ll i=1;i<=n;i++)scanf("%lld",&b[i]);for(ll k=0;k<25;k++){ll l=1,r=0,ans=0;for(ll i=1;i<=n;i++)a[i]=b[i]&((1ll<<k+1)-1);sort(a+1,a+1+n); for(ll i=n;i>=1;i--){ll L=(1ll<<k)-a[i],R=(1ll<<k+1)-a[i];while(r<n&&a[r+1]<R)r++;while(l<=n&&a[l]<L)l++;if(l>=i)break;ans+=min(r,i-1)-l+1; }l=1,r=0;for(ll i=n;i>=1;i--){ll L=(1ll<<k+1)+(1ll<<k)-a[i],R=(1ll<<k+2)-a[i];while(r<n&&a[r+1]<R)r++;while(l<=n&&a[l]<L)l++;if(l>=i)break;ans+=min(r,i-1)-l+1; }sum+=(ans&1)*(1ll<<k);}printf("%lld\n",sum);return 0;
}

CF1322B-Present【双指针】相关推荐

  1. CF1322B:Present(异或、two pointers)

    解析 想到了按位,但卡在了进位- qwq 当时总是想一位一位往后转化,但是那样确实做不了 判断第k位时把每个数的前k-1位提出来 sort一下 再维护双指针,就可以很方便的统计进位的个数了 代码 #i ...

  2. Codeforces Round #626 (Div. 2) D. Present 按位贡献 + 快排新姿势

    传送门 文章目录 题意: 思路: 题意: 给你一个长度为nnn的序列aaa,让你计算 n≤4e5,a≤1e7n\le 4e5,a\le 1e7n≤4e5,a≤1e7 思路: 首先这个式子是n2n^2n ...

  3. Leetcode 15.三数之和 双指针 or 暴力哈希

    题目链接:传送门 题目:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组. 暴力+ ...

  4. CentOS Linux解决 Device eth0 does not seem to be present

    通过OVF部署Linux主机后提示 ringing up interface eth0:  Device eth0 does not seem to be present,delaying initi ...

  5. 【ASP.NET Core】解决“The required antiforgery cookie xxx is not present”的错误

    当你在页面上用 form post 内容时,可能会遇到以下异常: The required antiforgery cookie "????????" is not present ...

  6. 技术图文:双指针在求解算法题中的应用

    背景 前段时间,在知识星球立了一个Flag,这是总结Leetcode刷题的第三篇图文. 理论部分 Python list 的源码地址: https://github.com/python/cpytho ...

  7. 技术图文:双指针在链表问题中的应用

    背景 最近这段时间团队在进行算法刻意练习活动,我带着同学们刷 leetcode 的"腾讯精选练习(50)题",参见:我是如何组织"算法刻意练习活动"的? 在做题 ...

  8. 双指针问题最简单的教程(1)

    什么样的问题适合用双指针技巧?当问题是从一个有序的数组或链表中,找到一个元素的子集,该子集需要满足某种限制. 这时候就特别适合用双指针.这个子集可能是某两个元素,某三个元素,甚至是一个子数组. 1 举 ...

  9. [SCOI2009]生日礼物 双指针

    题意: 小西有一条很长的彩带,彩带上挂着各式各样的彩珠.已知彩珠有N个,分为K种.简单的说,可以将彩带考虑为x轴,每一个彩珠有一个对应的坐标(即位置).某些坐标上可以没有彩珠,但多个彩珠也可以出现在同 ...

最新文章

  1. ES6 一些常用使用
  2. 5G NGC — GTPv1-U 协议的扩展
  3. 思科宣布NB-IoT平台实现商用
  4. 腾讯笔试题 如下代码,result变量的输出结果是多少
  5. Jquery的分页插件
  6. AFNetworking框架-详细解析
  7. restify mysql_[菜鸟试水]关于Nodejs搭建后台API服务(Mysql-Restify)[下]
  8. oracle ora 00910,NVARCHAR2字段超长问题:ORA-00910: specified length too long for its datatype
  9. XML的DTD约束和Schema约束
  10. docker 镜像修改的配置文件自动还原_基于Docker搭建Redis一主两从三哨兵
  11. csvreader_OpenCSV CSVReader CSVWriter示例
  12. 第九章-安装RPM包或源码包
  13. 3. Builder(建造者)
  14. 笔记 android 知乎,字节跳动团队发布Android Framework笔记,知乎上已获万赞
  15. 第八次作业-项目进度计划
  16. python人民币转大写_python实现人民币大写转换
  17. 《人生七年》纪录片-个体心理学中的自卑与超越角度解读
  18. python的Gensim库如何使用
  19. DELL液晶显示器如何进入工程模式
  20. Codevs 1219 骑士游历

热门文章

  1. 用计算机才能奏乐曲,计算机音乐系统和音乐听觉训练
  2. micropython安装ros_ROS2与STM32入门教程-microROS的linux版本
  3. arcgis批量处理nc文件_气象数据处理——nc文件
  4. python hexdigest,Java方法,可以为Hex中的HMAC-SHA256提供与Python方法相同的输出
  5. php phpmailer qq邮箱,QQ邮箱利用PHPmailer发送邮件
  6. [Java基础]体验Lambda表达式
  7. UVA-11988 悲剧文本-静态链表
  8. AcWing 312. 乌龟棋
  9. JAVA中小细节(易忽视和易错点)
  10. java中的循环结构_Java中的循环结构进阶