Sum of xor】的更多相关文章

Sum of xor jdoj-2160 题目大意:给你一个n,求1^2^...^n. 注释:$n<=10^{18}$. 想法:第一道异或的题.先来介绍一下什么是异或.a^b表示分别将两个数变成二进制后,从左到右按位取异或.两个异或字符,相同为0,不同为1.接下来,我们来证明异或的一些性质. 1.异或单位独立性.两个数的二进制,如果位数不够按位补全.我们显然可以证明,每一位上的异或显然独立的. 2.a^0=a,a^a=0.显然. 3.异或交换律.我们对于三个数来进行考虑.不妨设为a,b,c.我们…
题目链接:https://vjudge.net/problem/UVALive-8518 题目大意: 给定一个长度为 $N$ 的数字序列 $A$,进行 $Q$ 次询问,每次询问 $[L,R]$,需要回答这个区间内的子序列的所有子序列的异或和之和. $1 \le N,Q \le 100000$ $0 \le A[i] \le 1000000$ 知识点: 前缀和 解题思路: 将序列中的每一个数转成二进制(不超过 $20$ 位),逐位考虑. 根据序列中的数字用二进制表示时在该位上为 $1$ 或 $0$…
Source ftiasch 解题思路: 本题的题解有参考这里,但是那篇年代太久远,讲的也不甚清晰,所以可能会对很多新手造成困扰,所以又写了这一篇. 亦或有很多规律,本题使用到的是n^(n+1)=1,其中n从0开始.即0^1=1,2^3=1,4^5=1...以此类推. 所以可以看出,当题目所给的n为奇数的时候,从0开始两两配对,可以正好配成(n+1)/2对(结合律),每一对的异或值都为1(其中可以忽略0的加入的影响,因为0与任何数异或都等于另一个数本身).这个时候我们只需要数一下有多少个1就好啦…
https://www.hackerrank.com/contests/hourrank-13/challenges/arthur-and-coprimes 要求找出所有x <= n   x + n = x ^ n的个数. 首先如果n的二进制是100101010  n = 298 这样的话 先考虑最高位的1,如果x在同一个位上也是1,就是x是100000000这样的话,是不行的,因为异或并不能使那一位变成0,而加法却把他们变了(进位了),所以,如果那个固定是1,那么x从100000000 ---…
题目链接:https://atcoder.jp/contests/abc129/tasks/abc129_e 题目大意 给定一个二进制表示的数 L,问有多少对自然数 (a, b) 满足 $a + b \leq L 且 a + b = a \oplus b $. 分析 由于异或是无进位相加,所以 $a + b = a \oplus b $ 等价于 a 和 b 的每一位对应二进制位都不会是两个 1. 设 L 有 n 个 1.按 L 中的顺序编号为 n~1. 设 L(i) 为编号为 i 的 1 到 L…
题目链接:http://codeforces.com/contest/703/problem/D 给你n个数,m次查询,每次查询问你l到r之间出现偶数次的数字xor和是多少. 我们可以先预处理前缀和Xor[i],表示1~i的xor和.因为num^num=0,所以Xor[r] ^ Xor[l - 1]求的是l~r之间出现奇数次的数字xor和. 那怎么求偶数次的呢,那我们可以先求l到r之间不重复出现数字的xor(比如1 1 2 求的是1 ^ 2),然后再xor以上求出的Xor[r] ^ Xor[l…
题意:给你一个序列(n<=100000),求出一个连续的子序列[i,j]使得ai xor ai+1 xor…… xor aj最大,求出这个最大值(其中每个数<=2^21) 分析:题目和求一段子序列的和或者积很像,只是运算法则改变,所以可以往求子段和.积的方法上面考虑 首先如果设sum[i]=a1 xor a2 xor a3……xor ai,则子序列[i,j]的xor值可以表达为sum[j] xor sum[i-1],这样是O(n^2)的是不行的 有以往的处理经验我们知道,后面那个j一定要枚举的…
题目链接 给n个数, 两种操作, 一种是求区间内的数的和, 一种是将区间内的数异或x. 异或x没有什么思路, 单个异或肯定超时, 区间异或也没有办法做....后来才知道可以按位建线段树, 这样建20棵线段树就可以. 每一次异或, 对于给定的x, 如果x的第i位是1, 那么就将第i棵线段树在给定的区间内0,1翻转, 这是很基础的操作. 对于区间求和操作, 我们可以求出给定的区间, 从高位到低位, 每一位依次有多少个1, 然后就可以直接求出来, 感觉不好表达....具体看代码. #include<b…
先上题目: Xor pairs Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) SubmitStatus Problem Description long long ans = 0;for(int i = 1; i <= n; i ++)    for(int j = i + 1; j <= n; j ++)       for(int k = j + 1; k <= n;…
题目:下列操作 Change operations:0 a b change all characters into '0's in [a , b]1 a b change all characters into '1's in [a , b]2 a b change all '0's into '1's and change all '1's into '0's in [a, b]Output operations:3 a b output the number of '1's in [a,…