hdu6059[字典树+思维] 2017多校3
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
int trie[ * ][];
int no[ * ];
int sz[ * ];
int sum[][];
int T, n, temp, tot = ;
LL ans = ;
void solve(int x) {
int now = ;
for (int i = ; ~i; i--) {
int bit = (x & ( << i)) ? : ;
sum[i][bit]++;
if (!trie[now][bit]) {
trie[now][bit] = ++tot;
}
if (trie[now][ ^ bit]) { //存在兄弟节点,即有符合的(Ai,Aj)
int bro = trie[now][ ^ bit];
ans += 1LL * sz[bro] * (sz[bro] - ) / ;
ans += 1LL * (sum[i][ ^ bit] - sz[bro]) * sz[bro] - no[bro];
}
now = trie[now][bit];
sz[now]++;
no[now] += sum[i][bit] - sz[now];//除去不符合j>i的(Ai,Aj),要累加
//cout << now << ' ' << no[now] << endl;
}
}
void init() {
memset(trie, , sizeof(trie));
memset(no, , sizeof(no));
memset(sum, , sizeof(sum));
memset(sz, , sizeof(sz));
ans = , tot = ;
}
int main() {
scanf("%d", &T);
while (T--) {
init();
scanf("%d", &n);
for (int i = ; i < n; i++) {
scanf("%d", &temp);
solve(temp);
}
printf("%lld\n", ans);
}
}
hdu6059[字典树+思维] 2017多校3的更多相关文章
- hdu6035[dfs+思维] 2017多校1
/*hdu6035[dfs+思维] 2017多校1*/ //合并色块, 妙啊妙啊 #include<bits/stdc++.h> using namespace std; ; const ...
- hdu6074[并查集+LCA+思维] 2017多校4
看了标答感觉思路清晰了许多,用并查集来维护全联通块的点数和边权和. 用另一个up[]数组(也是并查集)来保证每条边不会被重复附权值,这样我们只要将询问按权值从小到大排序,一定能的到最小的边权和与联通块 ...
- Choosing The Commander CodeForces - 817E (01字典树+思维)
As you might remember from the previous round, Vova is currently playing a strategic game known as R ...
- codeforces 842 D. Vitya and Strange Lesson(01字典树+思维+贪心)
题目链接:http://codeforces.com/contest/842/problem/D 题解:像这种求一段异或什么的都可以考虑用字典树而且mex显然可以利用贪心+01字典树,和线段树差不多就 ...
- HDU6038-Function-数学+思维-2017多校Team01
学长讲座讲过的,代码也讲过了,然而,当时上课没来听,听代码的时候也一脸o((⊙﹏⊙))o 我的妈呀,语文不好是硬伤,看题意看了好久好久好久(死一死)... 数学+思维题,代码懂了,也能写出来,但是还是 ...
- hdu6059 Kanade's trio 字典树+容斥
转自:http://blog.csdn.net/dormousenone/article/details/76570172 /** 题目:hdu6059 Kanade's trio 链接:http:/ ...
- Trie树/字典树题目(2017今日头条笔试题:异或)
/* 本程序说明: [编程题] 异或 时间限制:1秒 空间限制:32768K 给定整数m以及n个数字A1,A2,..An,将数列A中所有元素两两异或,共能得到n(n-1)/2个结果,请求出这些结果中大 ...
- HDU 6059 17多校3 Kanade's trio(字典树)
Problem Description Give you an array A[1..n],you need to calculate how many tuples (i,j,k) satisfy ...
- 2017ACM暑期多校联合训练 - Team 6 1001 HDU 6096 String (字符串处理 字典树)
题目链接 Problem Description Bob has a dictionary with N words in it. Now there is a list of words in wh ...
随机推荐
- 从零开始利用vue-cli搭建简单音乐网站(二)
1.利用vue-router实现页面跳转 程序可以正常运行之后,下面我们需要配置路由实现页面的局部刷新,这一功能将用来实现网站页面的跳转. 打开程序目录,进入"src\router\inde ...
- IE浏览器兼容background-size
background-size是CSS3新增的属性,IE8以下不支持,通过滤镜实现background-size效果 background-size:contain; // 缩小图片来适应元素的尺寸( ...
- iOS 自适应高度,改变字体颜色
#define kMainBoundsWidth ([UIScreen mainScreen].bounds).size.width //屏幕的宽度 #define kFont [UIFont sys ...
- Azure 8 月新公布
Azure 8 月新发布:Cosmos DB 每分钟请求单位,存储的托管磁盘及促销,高级和标准磁盘存储大尺寸磁盘,高级磁盘存储小尺寸磁盘. Azure Cosmos DB:每分钟请求单位为您降低成本, ...
- LINUX提高openfire并发数(网上收集)
谷歌博客地址:http://tsaiquinn.blogspot.com/2014/10/linuxopenfire.html 影响连接数的元素包含三种:1)Linux的系统参数2)进程自身可以创建的 ...
- go get 升级所有
go get -u all go get -u go mod update go get -u full_package_name go get -u github.com/... // ('. ...
- Arch Linux 天坑
https://wiki.archlinux.org/index.php/Samba_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) samba gui客户端 smb4 ...
- ios之UISplitViewController
iPad的屏幕比iPhone大,所以在界面上,iPad比iPhone多一个UISplitViewController,用来实现iPad在横屏时,分两栏显示所需要的界面,可以一边是目录一边是具体的内容. ...
- UINavgationController
UINavigationBar和UINavigationItem是iOS开发中常用的控件. 1.设置导航栏标题 self.title = @"iOS开发:iOSDevTip"; ...
- git 不完全教程
概念 工作目录:当前所见,Working directory 暂存区域:以后要提交到仓库的文件,称为Index或者staging area Git 仓库:持久化存储快照的地方,HEAD指针所指向的地方 ...