P4462 异或序列 莫队 + 异或技巧
发布日期:2021-09-25 23:58:05
浏览次数:8
分类:技术文章
本文共 1581 字,大约阅读时间需要 5 分钟。
题意:给定一个k,一段序列。有m个询问,每次给定 [ l , r ] ,询问该区间内,有多少子序列满足异或和等于k。以下数组 x 为当前点的 value, a 为 x 的前缀异或和。
看到区间异或和,不由的想到可以转换成前缀异或:a( l ) ^ a( l + 1 ) ^ … ^ a( r ) == a( l - 1 ) ^ a( r ) ,现在问题转换成了在 [ l , r ] 内是否存在两个数异或等于k。也就是 a [ x ] ^ a [ y ] = k 。让后看到了这个式子之后还是有点不可做,比如当前区间是 [ l , r ] ,要加上 x [ r + 1 ] 这个数,怎么找另外一个 [ l , r ] 内的数与它异或为 k 的 a [ x ] 呢?显然可以将两边异或a [ r + 1 ],通过 a [ x ] = a [ r + 1 ] ^ k 得到。剩下的就比较简单了,用一个桶记录一下异或值的个数,直接操作即可。
闲的没事加了一些优化,不加也能过。
#pragma GCC optimize(2)#include#include #include #include #include
转载地址:https://blog.csdn.net/DaNIelLAk/article/details/108342371 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月13日 09时03分57秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
C#中的多态性
2019-04-27
C#中的命名空间
2019-04-27
设计模式——状态模式
2019-04-27
设计模式——工厂模式
2019-04-27
Unity中实现有限状态机FSM
2019-04-27
Unity中实现反弹
2019-04-27
U3D游戏开发框架(九)——事件序列
2019-04-27
Unity中解决“SetDestination“ can only be called on an active agent that has been placed on a NavMesh
2019-04-27
Unity中的刚体
2019-04-27
Unity中的坐标转换
2019-04-27
Unity中为什么不能对transform.position.x直接赋值?
2019-04-27
Unity中物体移动方法详解
2019-04-27
使用对象池优化性能
2019-04-27
Unity中的UI方案(基础版)
2021-06-30
Lua(一)——Lua介绍
2021-06-30
Lua(二)——环境安装
2021-06-30
Unity中父子物体的坑
2021-06-30
基础知识——进位制
2021-06-30
Lua(十二)——表
2021-06-30
Lua(十三)——模块与包
2021-06-30