博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[十二省联考2019]异或粽子
阅读量:7011 次
发布时间:2019-06-28

本文共 1497 字,大约阅读时间需要 4 分钟。

Description

给定\(n\)个数,求其中前\(k\)大的区间异或和的和

Solution

首先区间异或和可以直接用前缀异或和化成两个数的异或值

从左到右建出可持久化\(01-Trie\)

其实是不需要的,因为我们可以不考虑顺序的问题,求出前\(2k\)大,然后再除\(2\)

但是蒟蒻还是建了。。。

考虑先把每个右端点的第\(1\)大区间扔进\(pq\)

每次取出堆顶元素,更新答案,然后把相应的右端点的下一个排名的区间扔进\(pq\)

总复杂度应是\(O(n (\log n+\log k))\)

Code 

/*    可持久化01-trie并不是必要的    但是蒟蒻从来没写过,所以还是练练手吧    2019/4/11 Pac */#include
#define ll long long#define max(a,b) ((a)>(b)?(a):(b))#define min(a,b) ((a)<(b)?(a):(b))#define reg registerinline ll read(){ ll x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+ch-'0';ch=getchar();} return x*f;}const int MN=5e5+5,MK=2e5+5,MS=MN*65;int n,k;ll a[MN];struct Trie{int c[2],siz;}t[MS];int tot;int rt[MN];int Modify(int rt,int step,ll val){ int o=++tot;t[o]=t[rt];++t[o].siz; if(step<0) return o; if(val>>step&1) t[o].c[1]=Modify(t[o].c[1],step-1,val); else t[o].c[0]=Modify(t[o].c[0],step-1,val); return o;}ll Query(int x,int step,int k,ll val){ if(step<0) return 0; bool tmp=val>>step&1;int ssiz=t[t[x].c[tmp^1]].siz; if(k>ssiz) return Query(t[x].c[tmp],step-1,k-ssiz,val); else return (1u<
q;ll ans;int main(){ n=read();k=read(); reg int i; rt[0]=Modify(rt[0],31,0); for(i=1;i
o.k) q.push((Node){o.r,o.k+1,Query(rt[o.r-1],31,o.k+1,a[o.r])}); } return 0*printf("%lld\n",ans);}


Blog来自PaperCloud,未经允许,请勿转载,TKS!

转载于:https://www.cnblogs.com/PaperCloud/p/10688362.html

你可能感兴趣的文章
Cocos2d-x Eclipse下程序运行产生错误Effect initCheck() returned -1
查看>>
[转] 从HTTP状态 301,302,200 来看页面跳转
查看>>
遍历Dictionary<K,V>的两种方式
查看>>
【原】Unity3d 类似Dota血条
查看>>
Spring.NET 1.3.2 集成 NHibernate 3.2 - 5 - 事务管理
查看>>
POJ 2771 Guardian of Decency(二分匹配,最大独立集)
查看>>
控制反转IOC与依赖注入DI
查看>>
sqlserver 数据库订阅报错 22202 14058
查看>>
poj 2007 Scrambled Polygon(凸多边形顶点输出)
查看>>
BusinessUnit, User, Role 中常用的APIs
查看>>
AssetBundle 在Android机子上进行读取 .
查看>>
OpenGL路(四)自制的图形功能(立方体、汽缸、圆锥)
查看>>
19.最经济app发短信的方法
查看>>
ASP.NET web.config中<customErrors>节点说明
查看>>
《慕客网:IOS基础入门之Foundation框架初体验》学习笔记 <五> NSDicionary + NSMutableDictionary...
查看>>
jquery选择器 之 获取父级元素,子元素,同级元素
查看>>
Ajax注册表单用户名实时验证
查看>>
python使用正則表達式
查看>>
java遍历hashTable
查看>>
restful
查看>>