题意: ZYB喜欢研究Xor,如今他得到了一个长度为n的数组A. 于是他想知道:对于全部数对(i,j)(i∈[1,n],j∈[1,n]).lowbit(AixorAj)之和为多少.因为答案可能过大,你须要输出答案对998244353取模后的值 定义lowbit(x)=2k,当中k是最小的满足(x and 2k)>0的数 特别地:lowbit(0)=0 输入描写叙述 一共T(T≤10)组数据,对于每组数据: 第一行一个正整数n,表示数组长度 第二行n个非负整数,第i个整数为Ai n∈[1,5∗10…
Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 538    Accepted Submission(s): 259 Problem Description Memphis loves xor very musch.Now he gets an array A.The length of A is n.Now he wants to kn…
题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5269 bc:http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=603&pid=1002 题解: (以下有提到位数的都是指二进制表示) 对于xor值为1的两个数,他们的最低位(二进制表示)必然不同,所以我们把n个数按最低位数不同分为两堆,这两堆个数的乘积就是xor的值等于1的贡献.同理,我们可以递归处理出x…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5269 思路分析:当lowbit(AxorB)=2p 时,表示A与B的二进制表示的0-p-1位相等,第p位不同:考虑维护一棵字母树,将所有数字 转换为二进制形式并且从第0位开始插入树中,并在每个节点中记录通过该结点的数字数目:最后统计答案,对于每一个数字, 对于在其路径中的每一个结点X,假设其为第K层,统计通过与该结点不同的值的结点的数目count,则结果增加count*2k; 代码如下: #incl…
题目大意: 长度为\(n\)的数组A.求对于所有数对\((i,j)(i \in [1,n],j \in [1,n])\),\(lowbit(A_i xor A_j)\)之和.答案对998244353取模 定义lowbit(0)=0 题解: 官方题解给出的Trie的做法... 但是我有一个分治的做法: 我们从低到高枚举二进制位: 在每个二进制位枚举时,将所有的数按照这一二进制位为0或为1分成两组 这样一共有两组的siz的乘积对的数在这一位上对答案做出贡献 由于我们发现以后这两组数间不可能存在一组数…
题意: 给出一个序列,对每两个数求异或结果后取最低位的1出来作为一个数,然后求这些数字的和.比如:{a,b,c},结果是lowbit(a^b)+lowbit(a^c)+lowbit(b^a)+lowbit(b^c)+lowbit(c^a)+lowbit(c^b).若不剔除结果为0的,应该有n*n个数的和作为结果. 思路: 试考虑二分法. 观察到可能的取值 lowbit[a]=1,2,4,8.....也就是说最多有29种,结果就是ans=C1*1+C2*2+C3*4+C4*8....C为个数.可以…
[算法]trie [题解] 为了让数据有序,求lowbit无法直接排序,从而考虑倒过来排序,然后数据就会呈现出明显的规律: 法一:将数字倒着贴在字典树上,则容易发现两数的lowbit就是它们岔道结点的深度,所以先建树后对于一个数字依次把每次分岔开的另一边的size乘上权值累加答案. 法二:从高位到低位分组求和,即第一位1在上,0在下,则两边之间互相计算过后就再无影响,只剩下各自内部的事情再处理.由于排序后数据的有序性使分治可行. 法三:排序后对于一个数字,它和后面的数字的lowbit有单调性………
这是昨晚队友跟我说的题,不知道当时是什么玄幻的事件发生了,,我看成了两两相乘的XOR 纠结了好长时间间 不知道该怎么办 今天早上看了下这道题,发现是两两相加的XOR  然后就想了想昨晚的思路 发现可做 对于 XOR 在我的记忆中 ,大部分的都是拆成数位来做 那么这题  .... 其实也是类似的 拆成数位.有两种拆法  将数据拆成数位和将答案拆成数位(其实就是考虑答案的每一位) 想了想将数据拆成数位·········· 没法单独考虑每一位的‘功’ 那就将考虑答案的每一位了 最好考虑的是第一位了 只…
题目电波: HDU--5269 ZYB loves Xor I 首先我们先解决 ai xor aj 每个数转化为二进制  我们用字典树统计 每个节点 0 和 1 的出现的个数 #include<bits/stdc++.h> using namespace std; #define maxn 50000 #define mod 998244353; struct ac{ ]; void init(){ sum=; memset(nex,,sizeof(nex)); } }tre[maxn*];…
ZYB loves Xor I Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 917    Accepted Submission(s): 424 Problem Description Memphis loves xor very musch.Now he gets an array A.The length of A is n.No…