位运算
ijbuhv
这个作者很懒,什么都没留下…
展开
-
zoj 3870 Team Formation 位运算
//给n个数,找有多少队的两个数的异或值大于它们自己//对于两个数中小的那个数的最高位在大的数中该位为0//那么两个数异或所得的数比两个数大//否则,这个数比大的数小#include#include#include#includeusing namespace std ;const int maxn = 100010;long long map[40];原创 2015-05-26 17:18:46 · 745 阅读 · 0 评论 -
hdu5416CRB and Tree 异或
//给一棵树//对任意的s//问有多少对(u,v)是的从u到v的路径的所有边权值为s//f(u,v) = f(root , u)^f(root ,v)//只要记录所有点到树根的路径的异或值//然后枚举端点#include#include#includeusing namespace std ;const int maxn = 1e5+10 ;typedef long long原创 2015-08-30 21:34:56 · 527 阅读 · 0 评论 -
hdu5344MZL's xor
//给一个数组A,问这个数组的所有(Ai+Aj)的异或值//由于对于每一个(Ai+Aj)^(Aj+Ai) == 0//所以答案是2*(a1^a2^a3...)#include<cstdio>#include<cstring>#include<iostream>using namespace std ;typedef __int64 ll ;int main(){ ll n原创 2015-08-04 19:09:02 · 810 阅读 · 0 评论 -
hdu5014Number Sequence 位运算
//给出长度为n+1的序列 a 其中0<=ai<=n且ai != aj (i != j)//找出满足同样条件的序列b使得//t = (a[0]^b[0]) + (a[1]^b[1]) + ... + (a[n]^b[n]) 最大//由于a和b的序列的长度都是确定的//从n到0的数//每个数i找一个从其最高位开始按位非的数j//由于对应位置最高位为0,所以j<=i//对于每一个数i其对原创 2015-09-09 19:17:41 · 406 阅读 · 0 评论