这题做法很多
可以通过类似noi超级钢琴那道题目的做法用可持久化+trie来做
还可以直接在trie树上维护size域然后类似查找k大的做法做
总之还是比较水的

 type node=record
kth,num,ans:longint;
end; var heap:array[..] of node;
son:array[..,..] of longint;
size:array[..] of longint;
a:array[..] of longint;
t,i,n,m:longint; procedure swap(var a,b:node);
var c:node;
begin
c:=a;
a:=b;
b:=c;
end; procedure add(x:longint);
var i,p,y:longint;
begin
p:=;
for i:= downto do
begin
y:=x and ( shl i);
if y> then y:=;
if son[p,y]= then
begin
inc(t);
son[p,y]:=t;
end;
p:=son[p,y];
inc(size[p]);
end;
end; function ask(x,k:longint):longint;
var p,i,y:longint;
begin
p:=;
ask:=;
for i:= downto do
begin
y:=x and ( shl i);
if y> then y:=;
if size[son[p,y]]>=k then p:=son[p,y]
else begin
ask:=ask+ shl i;
k:=k-size[son[p,y]];
p:=son[p,-y];
end;
end;
end; procedure sift(i:longint);
var j:longint;
begin
j:=i shl ;
while j<=t do
begin
if (j+<=t) and (heap[j].ans>heap[j+].ans) then inc(j);
if heap[i].ans>heap[j].ans then
begin
swap(heap[i],heap[j]);
i:=j;
j:=i shl ;
end
else break;
end;
end; begin
readln(n,m);
t:=;
for i:= to n do
begin
readln(a[i]);
add(a[i]);
end;
for i:= to n do
begin
heap[i].num:=a[i];
heap[i].kth:=;
heap[i].ans:=ask(a[i],);
end;
t:=n;
for i:=n div downto do
sift(i);
for i:= to *m do
begin
if i mod = then write(heap[].ans,' '); //注意会被重复计算
if heap[].kth=n then
begin
swap(heap[],heap[t]);
dec(t);
end
else begin
inc(heap[].kth);
heap[].ans:=ask(heap[].num,heap[].kth);
end;
sift();
end;
end.

bzoj3689的更多相关文章

  1. 【BZOJ3689】异或之 堆+可持久化Trie树

    [BZOJ3689]异或之 Description 给定n个非负整数A[1], A[2], ……, A[n].对于每对(i, j)满足1 <= i < j <= n,得到一个新的数A ...

  2. BZOJ3689 异或之

    我们需要知道一个事实,trie树上是可以要求第k大的! 我们每个节点记个size值然后像其他数据结构一样维护就可以了 然后我们再搞个priority_queue什么的就好了,注意每个值会出现两次只要记 ...

  3. 【bzoj3689】异或之 可持久化Trie树+堆

    题目描述 给定n个非负整数A[1], A[2], ……, A[n].对于每对(i, j)满足1 <= i < j <= n,得到一个新的数A[i] xor A[j],这样共有n*(n ...

  4. bzoj2006 [NOI2010]超级钢琴 (及其拓展)

    bzoj2006 [NOI2010]超级钢琴 给定一个序列,求长度在 \([L,\ R]\) 之间的区间和的前 \(k\) 大之和 \(n\leq5\times10^5,\ k\leq2\times1 ...

  5. HBSX2019 游记

    Day -4 训练戳SX2019 3月训练 ZJOI2019 Day1几天前就考了 T1真考了麻将QwQ 九条可怜的毒瘤真的是业界良心 今天中午才起,要开始调整生物钟了 9012HBOIers群里讨论 ...

  6. [您有新的未分配科技点]可,可,可持久化!?------0-1Trie和可持久化Trie普及版讲解

    这一次,我们来了解普通Trie树的变种:0-1Trie以及在其基础上产生的可持久化Trie(其实,普通的Trie也可以可持久化,只是不太常见) 先简单介绍一下0-1Trie:一个0-1Trie节点只有 ...

随机推荐

  1. CentOS隐藏nginx版本号

    在/usr/local/nginx/conf/目录中,修改nginx.conf文件 在http {  }段中加入 http { server_tokens off; }

  2. linux下的openoffice安装和服务自启动

    openoffice下载并安装 wget http://sourceforge.net/projects/openofficeorg.mirror/files/4.1.1/binaries/zh-CN ...

  3. 各种vpn协议介绍(重点介绍sslvpn的实现方式openvpn)

    vpn介绍:   VIrtual Private Network 虚拟专用网络哪些用户会用vpn?    公司的远程用户(出差.家里),公司的分支机构.idc机房.企业间.FQ常见vpn协议有哪些?  ...

  4. 微信分组群发45028,微信分组群发has no masssend quota hint

    微信分组群发45028,微信分组群发has no masssend quota hint >>>>>>>>>>>>>> ...

  5. PS之放射背景

    效果图 素材 新建图层,填充颜色 新建图层,矩形工具画条形 滤镜-扭曲-极坐标 合并图层,效果如下 新建图层,画一个适当的圆 滤镜-模糊-高斯模糊 将素材人物抠出来放在中间

  6. 移动web前端小结(一)

    这段时间做了几个移动项目的前端页面,姑且称之webapp.做这几个项目之前根本没接触过移动端的相关知识,以为和PC端页面没啥区别无非就是尺寸小一点罢了.上手以后发现问题颇多.下面从框架.相关知识点.遇 ...

  7. [XML] resources的Xml配置文件 (转载)

    <?xml version="1.0" encoding="utf-8" ?> <resources> <language> ...

  8. Object-C 类实现

    这篇为Object-C添加方法的后续. 这里我们应该在类的实现(.m)文件中写 #import "Photo.h" @implementation Photo - (NSStrin ...

  9. Exercise DS

    #include <iostream> using namespace std; typedef struct Node { Node *next; int data; }Node, *L ...

  10. centos下配置多个tomcat同时运行

    首先安装好jdk,下载好tomcat,我的是apache-tomcat-7.0.50,不用专门配置CATALINA_2_BASE,CATALINA_2_HOME等环境变量. 把tomcat解压到lin ...