hdu5269 ZYB loves Xor I
分治法和字典树都可以,都是递归,但字典树耗内存
从第一bit开始,若相同则xor为0,分到同一部分,不相同则统计,且此时lowbit为这一bit,最后结果要乘以2
/*分治法*/
#include<cstdio>
#define MOD 998244353 using namespace std; int a[],t[],T,cas=,n,sum; void fenzhi(int l,int r,int mask)
{
if(r-l<=||mask==<<) return;
int i,j=l,k=r-;
for(i=l;i<r;i++)
{
if(a[i]&mask) t[j++]=a[i];
else t[k--]=a[i];
}
sum=(sum+(long long)(j-l)*(r-j)*mask)%MOD;
for(i=l;i<r;i++) a[i]=t[i];
fenzhi(l,j,mask<<);
fenzhi(j,r,mask<<);
}
int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
for(int i=;i<n;i++)
scanf("%d",&a[i]);
sum=;
fenzhi(,n,);
printf("Case #%d: %d\n",cas++,(sum*)%MOD);
}
return ;
}
/*字典树*/
#include <iostream>
#include<cstdio>
#include<cstring>
#define MOD 998244353 using namespace std; struct Node
{
int num;
int left,right;
};
Node node[];
int T,n,a,idx,sum,cas=; void insert(int a)
{
int root=,mask=;
for(int i=;i<;i++)
{
if(a&mask)
{
int &u=node[root].left;
if(!u) u=idx++;
node[u].num++;
root=u;
}
else
{
int&u=node[root].right;
if(!u) u=idx++;
node[u].num++;
root=u;
}
mask<<=;
}
} void dfs(int x,int depth)
{
if(node[x].num<=) return;
sum=(sum+(long long)node[node[x].left].num*node[node[x].right].num*(<<depth))%MOD;
dfs(node[x].left,depth+);
dfs(node[x].right,depth+);
}
int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
memset(node,,sizeof(node[])*n*);
idx=;
node[].num=n;
for(int i=;i<n;i++)
{
scanf("%d",&a);
insert(a);
}
sum=;
dfs(,);
printf("Case #%d: %d\n",cas++,sum*%MOD);
}
return ;
}
hdu5269 ZYB loves Xor I的更多相关文章
- HDU--5269 ZYB loves Xor I (字典树)
题目电波: HDU--5269 ZYB loves Xor I 首先我们先解决 ai xor aj 每个数转化为二进制 我们用字典树统计 每个节点 0 和 1 的出现的个数 #include< ...
- ACM学习历程—HDU5269 ZYB loves Xor I(位运算 && dfs && 排序)(BestCoder Round #44 1002题)
Problem Description Memphis loves xor very musch.Now he gets an array A.The length of A is n.Now he ...
- ZYB loves Xor I(hud5269)
ZYB loves Xor I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
- hdu 5269 ZYB loves Xor I
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission( ...
- hdu 5269 ZYB loves Xor I && BestCoder Round #44
题意: ZYB喜欢研究Xor,如今他得到了一个长度为n的数组A. 于是他想知道:对于全部数对(i,j)(i∈[1,n],j∈[1,n]).lowbit(AixorAj)之和为多少.因为答案可能过大,你 ...
- bestcoder r44 p3 hdu 5270 ZYB loves Xor II
这是昨晚队友跟我说的题,不知道当时是什么玄幻的事件发生了,,我看成了两两相乘的XOR 纠结了好长时间间 不知道该怎么办 今天早上看了下这道题,发现是两两相加的XOR 然后就想了想昨晚的思路 发现可做 ...
- HDU 5269 ZYB loves Xor I Trie树
题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5269 bc:http://bestcoder.hdu.edu.cn/contests/con ...
- hdu 5269 ZYB loves Xor I 分治 || Trie
题目大意: 长度为\(n\)的数组A.求对于所有数对\((i,j)(i \in [1,n],j \in [1,n])\),\(lowbit(A_i xor A_j)\)之和.答案对998244353取 ...
- HDU 5269 ZYB loves Xor I (二分法)
题意: 给出一个序列,对每两个数求异或结果后取最低位的1出来作为一个数,然后求这些数字的和.比如:{a,b,c},结果是lowbit(a^b)+lowbit(a^c)+lowbit(b^a)+lowb ...
随机推荐
- C# 读书笔记之类与结构体
类和结构体都包括数据和操作数据的方法 类的定义形式 class PhoneCustomer{public const string DayOfSendingBill = "Monday&qu ...
- MVC5 + EF6酒店项目笔记
最近项目组准备用MVC5开发酒店模板包括后台.在此第一次学MVC5一个礼拜,看着组长给我的MVC5模板从一脸懵逼到懵懂. 慢慢学习,成长. 未完待续........
- 浅析const标识符在C++函数的功能
范例: class matrix { public: matrix(){}; const double getvalue(const unsigned row, const unsigned colu ...
- digitalocean网站打不开,大陆无法正常访问怎么办?
在中国大陆,由于某些恶心的原因,digitalocean官方网站经常出现无法打开,或者打开后网页异常的情况,如果你是一个新注册用户,你甚至会被吓到,一个全球知名的vps主机商网站可能是这样的: 我的天 ...
- Vultr优惠码20美元享受20GB SSD和2T流量
美国vps主机商vultr最新优惠码:20FOR30,只限新注册用户,点击注册链接,进入后台Billing,找到Gift code,输入20FOR30,点击apply,就能免费获得20美元的账户余额. ...
- html的表单表格...
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 多线程---同步函数的锁是this(转载)
class Ticket implements Runnable { private int tick = 100; Object obj = new Object(); boolean flag = ...
- [Jmeter]jemeter启动报错,返回错误码 5,处理方法
今天在使用jmeter的时候,启动GUI,发现bat文件执行有告警,告警内容如下: java.util.prefs.WindowsPreferences <init>WARNING: Co ...
- padding当高度用时出现的问题
<div class="wrap"> <div class="sudoku"> <div class="sdk-wrap ...
- uitableview 关于键盘挡住输入框解决方法
// // AboutKeyBoardEventViewController.m // QueryBussinessInfo // // Created by mac on 16/8/23. // C ...