E. XOR Inverse(Trie&贪心)

思路:异或Trie+Trie+Trie+贪心。

考虑一个性质:两个数的大小只需比较其最高位。

因此考虑将数的每位从高到低存入字典树,显然一个结点的左子树(该位为0)的数小于右子树(该位为1)。

因此我们就可以计算出每个位逆序对的贡献,然后贪心地对xxx从高位开始枚举。

另外计算子树的大小和子树的逆序对,可以在插入结点时统计。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=5e6+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;
#define mst(a,b) memset(a,b,sizeof a)
#define lx x<<1
#define rx x<<1|1
#define reg register
#define PII pair<int,int>
#define fi first
#define se second
#define pb push_back
#define il inline
int ch[N][2],sz[N],id,n;
ll dp[30][2];   //dp[i][0]表示第i位选择1的逆序对数,dp[i][1]表示第i位选择0的逆序对数
void add(int x){int p=0;for(int i=29;~i;i--){int v=(x>>i)&1;if(!ch[p][v]) ch[p][v]=++id;dp[i][v^1]+=sz[ch[p][v^1]];p=ch[p][v],sz[p]++;}
}
int main(){scanf("%d",&n);for(int i=1;i<=n;i++){int x;scanf("%d",&x);add(x);}ll cnt=0,ans=0;for(int i=29;~i;i--){if(dp[i][0]<dp[i][1]) ans+=(1<<i),cnt+=dp[i][0];else cnt+=dp[i][1];}printf("%lld %lld\n",cnt,ans);return 0;
}

E. XOR Inverse(Trie贪心)相关推荐

  1. HDU4825 Xor Sum —— Trie树

    题目链接:https://vjudge.net/problem/HDU-4825 Xor Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Li ...

  2. BZOJ4567 SCOI2016背单词(trie+贪心)

    倒过来变成查询前缀.考虑怎么排序.第一条代价n*n就相当于inf,说明一个单词的所有前缀都要排在它前面.那么串的依赖关系就是trie的结构.二三条说明代价是Σidi-idfa,那么显然最后的编号应该是 ...

  3. CodeForces - 1417E XOR Inverse(字典树求逆序对+分治)

    题目链接:点击查看 题目大意:给出一个长度为 n 的数列 a,现在要求选出一个 x,将 a 中的每个元素都异或之后得到一个新的数列 b,要求数列 b 的逆序对最小,问最小的逆序对是多少,x 该如何选择 ...

  4. 51nod1526 分配笔名 trie+贪心

    Description 班里有n个同学.老师为他们选了n个笔名.现在要把这些笔名分配给每一个同学,每一个同学分配到一个笔名,每一个笔名必须分配给某个同学.现在定义笔名和真名之间的相关度是他们之间的最长 ...

  5. HDU5661 Claris and XOR(异或贪心)

    Claris and XOR 题解:考虑异或的性质,肯定是尽量让xxx和yyy满足以下两种情况: xxx第iii位为111,yyy第iii位为000 xxx第iii位为000,yyy第iii位为111 ...

  6. Codeforces Round #177 (Div. 1)C. Polo the Penguin and XOR operation【贪心】

    http://codeforces.com/contest/288/problem/C 按二进制位从大到小进行匹配 #include <cstdio> #include <cstri ...

  7. 刷题总结——xor(ssoj)

    题目: 题目背景 OURCE:NOIP2015-SHY-7 题目描述 求一棵带边权的树的一条最大 Xor 路径的值.这里的"路径"不一定从根到叶子结点,中间一段路径只要满足条件也可 ...

  8. Codeforces Round #673 (Div. 2)——待补 E

    由于开学了,一般晚上就不打cf了(太晚了,寝室不太适合打),而且赛后也懒得vp,有时候会在图书馆口胡题目,然后回寝室补一补,不过我也写得太久了吧,很多细节疯狂wa A - Copy-paste 不难发 ...

  9. fetch 不是xhr_fetch与XHR的区别与优势

    Fetch API更加现代 XHR 和 Fetch API 最显著的区别就是调用方式不同.这一点大家应该都知道吧. 举个例子,下面两端代码完成的是同一功能: // 用 XHR 发起一个GET请求 va ...

最新文章

  1. HashedWheelTimer时间轮定时任务原理分析
  2. C++访问权限与继承
  3. 收银员英文缩写_如何在没有收银员的苹果商店购买东西
  4. 2019 ICPC Asia Nanjing Regional
  5. Linux加密框架crypto AES代码相关
  6. 19:Remove Nth Node From End of List【两指针】【链表】
  7. mysql5.1免安装版配置_mysql5.1免安装版配置
  8. Flask cookie API(response.set_cookie,request.cookies)
  9. Illegal character ((CTRL-CHAR, code 31)): only regular white space (\r, \n, \t) is allowed betwee...
  10. 那些配置修改之后需要重新启动
  11. Zabbix proxy配置
  12. 云服务器和虚拟主机的区别
  13. 英语发音规则---V字母
  14. 学习率预热warmup
  15. 解决vue+element 时间控件时间差,区域时差8小时
  16. “重感知·轻地图”重新定义自动驾驶
  17. 数字电视领域的数字版权保护技术标准综述
  18. python生成随机数和随机矩阵
  19. 数据分析项目-股票数据分析
  20. 大数据 就业 缺口_大数据专业就业前景 人才需求缺口大 今年增了24倍

热门文章

  1. 软件工程导论 复习笔记 (3)
  2. 关于性 父亲是这样对18岁女儿说的
  3. ubunto-shell编程1-初识shell
  4. [K/3Cloud]K3Cloud的移动审批方面
  5. JavaScript成功背后的四个关键人物!
  6. 核磁测试要求和制样要求
  7. VERICUT8.21数控车床仿真视频教程
  8. 黑色星期五!!  mysql 数据损坏了~~
  9. Spring Cloud Gateway 基本配置
  10. php dreamweaver转编码,用DW软件批量实现html编码转换的详细步骤 另附utf-8与gb2312互转软件小工具...