博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 3542 [Poi2014]Couriers ——可持久化线段树
阅读量:7143 次
发布时间:2019-06-28

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

【题目分析】

    查找区间内出现次数大于一半的数字。

    直接用主席树,线段树上维护区间大小,由于要求出现次数大于一半,每到一个节点可以分治下去。

    时间复杂度(N+Q)logN

【代码】

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std; #define maxn 500005#define mlog 30#define inf (0x3f3f3f3f) int read(){ int 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*10+ch-'0'; ch=getchar();} return x*f;} int rt[maxn],ls[maxn*mlog],rs[maxn*mlog],siz[maxn*mlog],idx=0; int n,m,x,a[maxn]; int ins(int o,int l,int r,int x){ int k=++idx; siz[k]=siz[o]+1; int mid=(l+r)/2; if (l==r) return k; if (x<=mid) rs[k]=rs[o],ls[k]=ins(ls[o],l,mid,x); else ls[k]=ls[o],rs[k]=ins(rs[o],mid+1,r,x); return k;} int query(int o1,int o2,int l,int r,int tim){// printf("%d %d\n",l,r); if (l==r) { if (siz[o2]-siz[o1]>tim) return l; else return 0; } if (siz[ls[o2]]-siz[ls[o1]]>siz[rs[o2]]-siz[rs[o1]]) return query(ls[o1],ls[o2],l,(l+r)/2,tim); else return query(rs[o1],rs[o2],(l+r)/2+1,r,tim);} int main(){ n=read();m=read(); for (int i=1;i<=n;++i) a[i]=x=read(),rt[i]=ins(rt[i-1],1,n,x);// for (int i=1;i<=n;++i) printf("%d ",a[i]); printf("\n"); for (int i=1;i<=m;++i) { int l=read(),r=read();// printf("ask for %d to %d\n",l,r); if (l==r) {// printf("l == r\n"); printf("%d\n",a[r]); } else printf("%d\n",query(rt[l-1],rt[r],1,n,(r-l+1)/2)); }}

  

转载于:https://www.cnblogs.com/SfailSth/p/6195085.html

你可能感兴趣的文章
Spring Web Services 3.0.4.RELEASE和2.4.3.RELEASE发布
查看>>
如何自动搞定全站图片的alt属性?
查看>>
配置一次,到处运行:将配置与运行时解耦
查看>>
突发热点事件下微博高可用注册中心vintage的设计\u0026实践
查看>>
Elixir 1.3带来新的语言功能、API和改进后的工具
查看>>
用Elm语言降低失败的风险
查看>>
抓住热门话题一对一直播,如何在风浪四起的直播市场劈风斩浪? ...
查看>>
手把手教你用owncloud搭建属于自己的云盘
查看>>
epoll+socket实现 socket并发 linux服务器
查看>>
阿里巴巴人事再调整,将打通淘宝、天猫两个消费场景 ...
查看>>
Kubernetes + CRI + Kata + Firecracker
查看>>
菜鸟成都未来园区启动,无人车首次进入园区调拨运输环节 ...
查看>>
算法不扎实的程序员,每个都很慌
查看>>
4个需要避免的常见Kubernetes监控陷阱
查看>>
规划一个智能工厂应避免的十个坑
查看>>
Linux 虚拟网络设备详解之 Bridge 网桥
查看>>
LaTeX的简单使用方法
查看>>
IO流
查看>>
第二十四章:页面导航(四)
查看>>
数字对讲系统开发札记(前端linux c 后端 c#)
查看>>