题目链接

题目大意:给你两个序列,第二个序列可以任意进行排列变换,然后由这两个序列一一异或得到答案序列,要求答案序列的字典序最小。

可持续字典树与第K大可持续线段树的区别主要在于每个节点上 ,它多了一个记录值。

因为线段树肯定是对区间处理,要+1的,但是字典树是对点处理,这两个值都要记录。

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=3e5+88;
int sum[N*30][2],son[N*30][2],x,n,tot,a[N];
void update(int last,int cur,int num,int pos){int temp=!!(num&(1<<pos));sum[cur][temp]=sum[last][temp]+1;sum[cur][temp^1]=sum[last][temp^1];son[cur][temp^1]=son[last][temp^1];if(!pos) return;update(son[last][temp],son[cur][temp]=++tot,num,pos-1);
}
void query(int last,int cur,int num,int pos,int ans){if(pos<0) {printf("%d ",ans);return;}int temp=!!(num&(1<<pos));if(sum[cur][temp]-sum[last][temp]>0) --sum[cur][temp],query(son[last][temp],son[cur][temp],num,pos-1,ans);else --sum[cur][temp^1],query(son[last][temp^1],son[cur][temp^1],num,pos-1,ans|(1<<pos));
}
int main(){scanf("%d",&n);for(int i=1;i<=n;++i) scanf("%d",a+i);scanf("%d",&x);update(0,++tot,x,29);for(int i=2;i<=n;++i) {scanf("%d",&x);update((i-2)*30+1,++tot,x,29);}for(int i=1;i<=n;++i) query(0,(n-1)*30+1,a[i],29,0); puts("");
}

转载于:https://www.cnblogs.com/mfys/p/8664513.html

可持续字典树 Perfect Security相关推荐

  1. Perfect Security (01字典树删除点)

    题意: 第一行给你一个n 第二行给你n个数字 分别是a[1],a[2]-a[n]. 第三行给你n个数字 分别是b[1],b[2]-b[n]. 问:第三行的序列可自由排列,要求排列之后的顺序 a[1] ...

  2. 01Trie树 CF923C Perfect Security

    CF923C Perfect Security 上下各n个数,求一种排列p,使上面的数i异或pi成为新的数i,求方案另字典序最小,输出该结果 01Trie树. 记录每个节点经过多少次. 每一次查询的时 ...

  3. Codeforces 948D Perfect Security

    Perfect Security 题意:给你一个A[i]数组, 再给你一个B[i]数组, 现在用选取 B[i] 数组中的一个 去和 A[i] 数组里的一个元素去进行异或操作, B[i]数组的元素只能用 ...

  4. 字典树实现_【Leetcode每日打卡】单词的压缩编码 Trie(字典树)入门

    一.前言(鸡汤(一段废..话..可以跳过啦)) 同学们好!没想到我这个小小的公众号破千粉啦,对于大佬们而言或许不值一提,但是对我而言是一个莫大的鼓舞!更加坚定了我持续输出优质内容的决心.希望我们都能每 ...

  5. hdu5296 01字典树

    根据二进制建一棵01字典树,每个节点的答案等于左节点0的个数 * 右节点1的个数 * 2,遍历整棵树就能得到答案. AC代码: #include<cstdio> using namespa ...

  6. BZOJ 3483 SGU505 Prefixes and suffixes(字典树+可持久化线段树)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3483 [题目大意] 给出一些串,同时给出m对前缀后缀,询问有多少串满足给出的前缀后缀模 ...

  7. 2014百度之星 Xor Sum(字典树+贪心)

    题目在HDU_OJ Problem Description Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整数,随后 Prometh ...

  8. HDU6964 I love counting (字典树+莫队)

    题意: 给定一个长度为 nnn 的序列c,qc,qc,q 次询问,每次给出l,r,a,bl,r,a,bl,r,a,b求在[l,r][l,r][l,r]中有多少种不同的值 kkk 满足 k⊕a≤b​.k ...

  9. Beautiful Subarrays (01字典树 瞎搞)

    题意: 题解: 一看问的是子序列,并且还是异或. 首先想到01字典树,再一看让你求子序列的个数,大致是想让你把这个序列进行前缀异或处理后然后再01字典树上进行操作吧. 假设01字典树往左边是0右边是1 ...

最新文章

  1. 记事本里出现该文件含有Unicode格式的字符,当保存为ANSI编码的文本时,该字符将丢失。怎么解决?
  2. Python高级技巧:用一行代码减少一半内存占用!
  3. 纯 Win32 SDK程序为什么每次要获取设备描述表句柄
  4. 后台管理中心跳转问题解决
  5. JavaScript + Thymeleaf + Spring Boot——易班优课YOOC课群在线测试自动答题解决方案(十八)模板脚本
  6. php下载 微信头像图片_php 下载微信头像
  7. CSS基础part1
  8. 论存储芯片对国家发展的重要性
  9. linux下c语言读写文件操作,Linux下C语言之文件操作
  10. Linux ftpget和ftpput命令
  11. 利用 MAC 自带的 mount_ntfs 工具加载ntfs移动硬盘进行数据读写
  12. 百度世界地图实现方法
  13. 光盘在服务器上装系统,如何通过DELL引导光盘在戴尔11G服务器上安装Win2003操作系统?.docx...
  14. DNS 工作原理是什么,域名劫持、域名欺骗、域名污染又是什么
  15. Notepad++设置记录
  16. 轻松解决mscorsvw.exe进程CPU占用高的问题
  17. ChucK学习笔记(一)——下载与安装
  18. 这个是我18年整理的,之前在我的电子笔记,现在感觉还是需要分享写写博客大家互相学习更好
  19. superMap Cesium(超图) ---scene open()用法
  20. RuPengWang项目

热门文章

  1. iatf16949内审员_申请IATF16949认证有什么要求
  2. 域内计算机如何同步网络t时间,网络节点的同步方法
  3. unistd.h linux,Linux 标准库下的unistd.h
  4. linux查询.gz日志,linux2-查日志
  5. java 移动页面中的图片上传_移动端上传图片(ajax跨域请求)
  6. friendly发音_friendly是什么意思_friendly怎么读_friendly翻译_用法_发音_词组_同反义词_友好的_亲密的-新东方在线英语词典...
  7. Java常用设计模式————原型模式(二)之深拷贝与浅拷贝
  8. oracle查询结果存入临时表,Oracle查询问题引发临时表使用
  9. oracle面向对象的数据类型,Oracle面向对象编程OOP
  10. 算法竞赛入门经典 第二章总结