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 ...
随机推荐
- Opencv常用函数
一.图像读写与简单处理 1. Mat cv::imread(const String& filename, int flags=IMREAD_COLOR). imread函数加载filenam ...
- kettle连接Hive中数据导入导出(6)
1.hive往外写数据 http://wiki.pentaho.com/display/BAD/Extracting+Data+from+Hive+to+Load+an+RDBMS 连接hive
- 修改weblogic中StuckThreadMaxTime参数
your_domain->Environment ->Servers ->your_server->Configuration->Tuning->Stuck Thr ...
- ESFramework 4.0 性能测试
本实验用于测试ESFramework服务端引擎的性能,测试程序使用ESFramework 4.0版本. 一.准备工作 测试的机器总共有3台,都是普通的PC,一台作为服务器,两台作为客户端. 作为服务器 ...
- LeetCode OJ 42. Trapping Rain Water
Given n non-negative integers representing an elevation map where the width of each bar is 1, comput ...
- MongoDB执行计划分析详解
要保证数据库处于高效.稳定的状态,除了良好的硬件基础.高效高可用的数据库架构.贴合业务的数据模型之外,高效的查询语句也是不可少的.那么,如何查看并判断我们的执行计划呢?我们今天就来谈论下MongoDB ...
- CSS3 transform的demo1
<!DOCTYPE html> <html> <head> <title>弹出层演示</title> <meta charset=&q ...
- php 实现简易模板引擎
1.MVC简介 MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式(详情自己百度): 1. Model(模型)表示应用程序核心 ...
- for计算100以内的奇数和
#include "stdio.h" void main() { //for计算100以内的奇数和 步长为1,continue实现 ; ;i<=;i++) { ==) { c ...
- ElasticSearch 的一次非正常master脱离的调查 (转 和我碰到的情况一模一样)
转自 http://simonlei.iteye.com/blog/1669992 一共有4个节点的cluster,其中es4 是master,某个时间突然es1脱离了整个cluster,调查过程如下 ...