洛谷P3567 [POI2014]KUR-Couriers(BZOJ3524)
来源:互联网 发布:mac pscc2015安装教程 编辑:程序博客网 时间:2024/06/05 11:48
主席树
洛谷题目传送门
BZOJ题目传送门
当一个数在这个区间内出现的次数超过一半时,其他所有数的出现次数之和一定小于这个数的出现次数。那么只要不断往出现次数多的那个数的位置递归下去即可。
讲得不是很清楚,大家看看代码然后感性理解一下会懂的
代码:
#include<cctype>#include<cstdio>#include<algorithm>#define N 500005using namespace std;struct tree{ int ls,rs,sum;}t[N*22];int n,m,nd,num,rt[N];inline char readc(){ static char buf[100000],*l=buf,*r=buf; if (l==r) r=(l=buf)+fread(buf,1,100000,stdin); if (l==r) return EOF; return *l++;}inline int _read(){ int x=0; char ch=readc(); while (!isdigit(ch)) ch=readc(); while (isdigit(ch)) x=x*10+ch-48,ch=readc(); return x;}void build(int &x,int l,int r,int fa,int p){ t[x=++nd].sum=t[fa].sum+1; if (l==r) return; int mid=l+r>>1; t[x].ls=t[fa].ls,t[x].rs=t[fa].rs; if (p<=mid) build(t[x].ls,l,mid,t[fa].ls,p); else build(t[x].rs,mid+1,r,t[fa].rs,p);}int srch(int p,int q,int l,int r,int w){//查询 //其实写出来和查询第k大很像,只是不需要减 if (t[q].sum-t[p].sum<=w) return 0; if (l==r) return l; int mid=l+r>>1,x=t[p].ls,y=t[q].ls; if (t[y].sum-t[x].sum>w) return srch(x,y,l,mid,w); else return srch(t[p].rs,t[q].rs,mid+1,r,w);}int main(){ n=_read(),m=_read(); int w; for (int i=1;i<=n;i++) build(rt[i],1,n,rt[i-1],w=_read()); while (m--){ int l=_read(),r=_read(),mid=r-l+1>>1; printf("%d\n",srch(rt[l-1],rt[r],1,n,mid)); } return 0;}
阅读全文
0 0
- 洛谷P3567 [POI2014]KUR-Couriers(BZOJ3524)
- [POI2014]KUR-Couriers
- [BZOJ3524][Poi2014]Couriers(主席树)
- [BZOJ3524][Poi2014]Couriers(主席树)
- bzoj3524: [Poi2014]Couriers(主席树)
- [BZOJ3524][Poi2014]Couriers(主席树)
- [Bzoj3524][Poi2014]Couriers
- bzoj3524[Poi2014]Couriers
- 【Poi2014】【BZOJ3524】Couriers
- [BZOJ3524][Poi2014]Couriers
- bzoj3524【POI2014】Couriers
- Bzoj3524:[Poi2014]Couriers
- bzoj3524: [Poi2014]Couriers
- BZOJ3524: [Poi2014]Couriers
- bzoj3524 [Poi2014]Couriers
- BZOJ3524 [Poi2014]Couriers
- BZOJ3524[Poi2014] Couriers
- 【bzoj3524】[Poi2014]Couriers
- 语言模型评价指标Perplexity
- 十大免费SSL证书:网站免费添加HTTPS加密
- easybcd添加ubuntu启动项方法教程
- Mac网卡命令行
- 自然语言处理怎么最快入门?
- 洛谷P3567 [POI2014]KUR-Couriers(BZOJ3524)
- LWC 64: 752. Open the Lock
- 二叉树的深度
- Nodejs学习笔记(十四)— Mongoose介绍和入门
- poj1698 Alice's Chance
- 深度学习中机器学习策略的应用 Projects-2
- ASP Session
- 在python中超简单安装mxnet
- VS中利用scanf函数读取字符串