Xor 特殊情况_题解

【题解提供者】吴立强

解法

思路

注意到对于单次的查询区间 [ l , r ] [l,r] [l,r],可以通过前缀异或和拆分为两个新的区间查询: [ 0 , l − 1 ] , [ 0 , r ] [0, l-1], [0,r] [0,l−1],[0,r]。

对于任意区间 [ 0 , R ] [0,R] [0,R] 可以找到最大的 x x x( x ≤ R x \le R x≤R 且 x m o d    4 = 0 x\mod 4 = 0 xmod4=0), [ 0 , R ] [0,R] [0,R] 的异或和等价于 [ x , R ] [x,R] [x,R] 的异或和。(根据上一题题解中的【拓展】可以求证此结论)

代码展示

cpp 复制代码
#include <iostream>
using namespace std;

int get(int x) {
    if(x < 0) return 0;
    int ans = 0;
    for(int i = x / 4 * 4; i <= x; i ++) ans ^= i;
    return ans;
}
int main() {
    int t;  cin >> t;
    while(t --) {
        int l, r;  cin >> l >> r;
        cout << (get(l - 1) ^ get(r)) << endl;
    }
    return 0;
}

算法分析

程序时间复杂度为 O ( t ) O(t) O(t)。

相关推荐
yzs8712 分钟前
OLAP数据库HashJoin性能优化揭秘
数据库·算法·性能优化·哈希算法
好家伙VCC30 分钟前
**发散创新:编译器优化实战——从LLVM IR到性能飞跃的奇妙旅程**
java·开发语言·python·算法
季明洵32 分钟前
数据在内存中的存储
数据结构·算法·c
阿昭L36 分钟前
AVL树及其计算
数据结构
weixin_4588726137 分钟前
东华复试OJ每日3题打卡·复盘85~87
算法
追随者永远是胜利者40 分钟前
(LeetCode-Hot100)70. 爬楼梯
java·算法·leetcode·职场和发展·go
不想看见4041 小时前
Climbing Stairs 基本动态规划:一维--力扣101算法题解笔记
算法·leetcode·动态规划
陈天伟教授1 小时前
人工智能应用- 推荐算法:05.推荐算法的社会争议
算法·机器学习·推荐算法
追随者永远是胜利者1 小时前
(LeetCode-Hot100)49. 字母异位词分组
java·算法·leetcode·职场和发展·go
apcipot_rain1 小时前
原神“十盒半价”问题的兹白式建模分析
python·数学·算法·函数·数据科学·原神·数列