HDU 5269 ZYB loves Xor I(位运算)
来源:互联网 发布:什么英语听力软件最好 编辑:程序博客网 时间:2024/06/06 01:10
Description
给出一个长度为n的序列a[i],问任意两个元素异或值的lowbit之和
Input
第一行一整数T表示用例组数,每组用例首先输入一整数n表示序列长度,之后输入n个整数a[i](1<=n<=5e4,0<=a[i]<=2^29)
Output
对于每组用例,输出a序列中任意两个元素异或值的lowbit之和
Sample Input
2
5
4 0 2 7 0
5
2 6 5 4 0
Sample Output
Case #1: 36
Case #2: 40
Solution
注意到如果两个数在一个较低位第一次出现不同的话,那么其高位如何并不影响其lowbit,故我们从最低位开始处理,对于最低位是0还是1把这n个数分成两部分,若这两部分数量分别为x和y,那么对答案的贡献就是x*y,之后两部分之间的数的组合对答案已经没有关系了,只对两部分分别对次低位进行与上述同样的处理,这样一层层的分下去即可,时间复杂度O(29nlogn)
Code
#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<vector>#include<queue>#include<map>#include<set>#include<ctime>using namespace std;typedef long long ll;#define INF 0x3f3f3f3f#define maxn 55555#define mod 998244353int T,n;ll a[maxn],ans;bool cmp(ll x,ll y){ return (x%2)<(y%2);}void Solve(int l,int r,int deep){ if(l>=r||deep>29)return ; sort(a+l,a+r+1,cmp); int num=0,pos=l-1; for(int i=l;i<=r;i++) { if(a[i]%2==0)num++,pos=i; a[i]>>=1; } ans+=1ll*num*(r-l+1-num)%mod*(1ll<<deep)%mod; Solve(l,pos,deep+1),Solve(pos+1,r,deep+1);}int main(){ int res=1; scanf("%d",&T); while(T--) { scanf("%d",&n); for(int i=0;i<n;i++)scanf("%lld",&a[i]); ans=0; Solve(0,n-1,0); printf("Case #%d: %lld\n",res++,2ll*ans%mod); } return 0;}
0 0
- HDU 5269 ZYB loves Xor I(位运算)
- hdu 5269 ZYB loves Xor I
- hdu 5269 ZYB loves Xor I
- hdu 5269 ZYB loves Xor I
- HDU 5269 ZYB loves Xor I
- HDU-5269 ZYB loves Xor I
- hdu 5269 ZYB loves Xor I(字典树)
- HDU 5269 && BestCoder #44 1002 ZYB loves Xor I (分治)
- HDU 5269 ZYB loves Xor I( 01 Trie 树)
- hdu 5269 ZYB loves Xor I && BestCoder Round #44
- HDU 5269 ZYB loves Xor I [01字典树]【思维】
- HDU 5269 ZYB loves Xor I 01trie
- hdu 5269 ZYB loves Xor I(字典树)
- HDU 5269 ZYB loves Xor I 贡献+Trie
- HDOJ 5269 ZYB loves Xor I
- HDU 5269 ZYB loves Xor I——BestCoder Round #44(字典树)
- HDU5269 ZYB loves Xor I(分治?解法)
- 字典树 hdu5269 ZYB loves Xor I
- 笔记 4.16
- 二叉树的最大节点
- 电路中电容、电感的主要作用
- 手机问题点整理和总结
- 单例模式之使用enum枚举数据类型实现
- HDU 5269 ZYB loves Xor I(位运算)
- 中缀表达式转后缀表达式(逆波兰表达式)
- jquery筛选过滤函数
- 在java使用xssProject
- 剑指offer--变态跳台阶
- 信号------信号的基本概念
- 提取不同颜色细胞
- netty中拆包粘包问题
- 百度地图多个InfoWindow同时展示