可持续字典树 Perfect Security
题目链接
题目大意:给你两个序列,第二个序列可以任意进行排列变换,然后由这两个序列一一异或得到答案序列,要求答案序列的字典序最小。
可持续字典树与第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相关推荐
- Perfect Security (01字典树删除点)
题意: 第一行给你一个n 第二行给你n个数字 分别是a[1],a[2]-a[n]. 第三行给你n个数字 分别是b[1],b[2]-b[n]. 问:第三行的序列可自由排列,要求排列之后的顺序 a[1] ...
- 01Trie树 CF923C Perfect Security
CF923C Perfect Security 上下各n个数,求一种排列p,使上面的数i异或pi成为新的数i,求方案另字典序最小,输出该结果 01Trie树. 记录每个节点经过多少次. 每一次查询的时 ...
- Codeforces 948D Perfect Security
Perfect Security 题意:给你一个A[i]数组, 再给你一个B[i]数组, 现在用选取 B[i] 数组中的一个 去和 A[i] 数组里的一个元素去进行异或操作, B[i]数组的元素只能用 ...
- 字典树实现_【Leetcode每日打卡】单词的压缩编码 Trie(字典树)入门
一.前言(鸡汤(一段废..话..可以跳过啦)) 同学们好!没想到我这个小小的公众号破千粉啦,对于大佬们而言或许不值一提,但是对我而言是一个莫大的鼓舞!更加坚定了我持续输出优质内容的决心.希望我们都能每 ...
- hdu5296 01字典树
根据二进制建一棵01字典树,每个节点的答案等于左节点0的个数 * 右节点1的个数 * 2,遍历整棵树就能得到答案. AC代码: #include<cstdio> using namespa ...
- BZOJ 3483 SGU505 Prefixes and suffixes(字典树+可持久化线段树)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3483 [题目大意] 给出一些串,同时给出m对前缀后缀,询问有多少串满足给出的前缀后缀模 ...
- 2014百度之星 Xor Sum(字典树+贪心)
题目在HDU_OJ Problem Description Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整数,随后 Prometh ...
- 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 ...
- Beautiful Subarrays (01字典树 瞎搞)
题意: 题解: 一看问的是子序列,并且还是异或. 首先想到01字典树,再一看让你求子序列的个数,大致是想让你把这个序列进行前缀异或处理后然后再01字典树上进行操作吧. 假设01字典树往左边是0右边是1 ...
最新文章
- 记事本里出现该文件含有Unicode格式的字符,当保存为ANSI编码的文本时,该字符将丢失。怎么解决?
- Python高级技巧:用一行代码减少一半内存占用!
- 纯 Win32 SDK程序为什么每次要获取设备描述表句柄
- 后台管理中心跳转问题解决
- JavaScript + Thymeleaf + Spring Boot——易班优课YOOC课群在线测试自动答题解决方案(十八)模板脚本
- php下载 微信头像图片_php 下载微信头像
- CSS基础part1
- 论存储芯片对国家发展的重要性
- linux下c语言读写文件操作,Linux下C语言之文件操作
- Linux ftpget和ftpput命令
- 利用 MAC 自带的 mount_ntfs 工具加载ntfs移动硬盘进行数据读写
- 百度世界地图实现方法
- 光盘在服务器上装系统,如何通过DELL引导光盘在戴尔11G服务器上安装Win2003操作系统?.docx...
- DNS 工作原理是什么,域名劫持、域名欺骗、域名污染又是什么
- Notepad++设置记录
- 轻松解决mscorsvw.exe进程CPU占用高的问题
- ChucK学习笔记(一)——下载与安装
- 这个是我18年整理的,之前在我的电子笔记,现在感觉还是需要分享写写博客大家互相学习更好
- superMap Cesium(超图) ---scene open()用法
- RuPengWang项目
热门文章
- iatf16949内审员_申请IATF16949认证有什么要求
- 域内计算机如何同步网络t时间,网络节点的同步方法
- unistd.h linux,Linux 标准库下的unistd.h
- linux查询.gz日志,linux2-查日志
- java 移动页面中的图片上传_移动端上传图片(ajax跨域请求)
- friendly发音_friendly是什么意思_friendly怎么读_friendly翻译_用法_发音_词组_同反义词_友好的_亲密的-新东方在线英语词典...
- Java常用设计模式————原型模式(二)之深拷贝与浅拷贝
- oracle查询结果存入临时表,Oracle查询问题引发临时表使用
- oracle面向对象的数据类型,Oracle面向对象编程OOP
- 算法竞赛入门经典 第二章总结