BZOJ2223(可持久化线段树)
来源:互联网 发布:淘宝卖家怎么用手机 编辑:程序博客网 时间:2024/06/14 00:08
思路:
很裸的可持久化。不说了。
/************************************************************** Problem: 2223 User: DtenSherlock Language: C++ Result: Accepted Time:1384 ms Memory:180708 kb****************************************************************/#include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<cmath>#include<cstring>#include<string>using namespace std;const int imax=100000+229;const int nmax=300000+229; int n,m,a[nmax],lishi[nmax],tot;int root[nmax],id;struct Node{ int lc,rc,count;}t[nmax*50];void add(int now,int pos,int l,int r){ if(l+1==r) { t[now].count++; return;} int Mid=(l+r)>>1; if(pos<Mid) { t[++id]=t[t[now].lc]; add(t[now].lc=id,pos,l,Mid);} else { t[++id]=t[t[now].rc]; add(t[now].rc=id,pos,Mid,r); } t[now].count=t[t[now].lc].count+t[t[now].rc].count;}int query(int pre,int now,int val,int l,int r){ int Mid=(l+r)>>1; if(l+1==r) return l; int lcount=t[t[now].lc].count-t[t[pre].lc].count; int rcount=t[t[now].rc].count-t[t[pre].rc].count; if(lcount>val) return query(t[pre].lc,t[now].lc,val,l,Mid); else if(rcount>val) return query(t[pre].rc,t[now].rc,val,Mid,r); else return 0;}void iread(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); lishi[++tot]=a[i]; } sort(lishi+1,lishi+tot+1); tot=unique(lishi+1,lishi+tot+1)-(lishi+1); }void iwork(){ root[0]=++id; for(int i=1;i<=n;i++) { root[i]=++id; t[root[i]]=t[root[i-1]]; int pos=lower_bound(lishi+1,lishi+tot+1,a[i])-lishi; add(root[i],pos,1,tot+1); } int Q,l,r; scanf("%d",&Q); for(int i=1;i<=Q;i++) { scanf("%d%d",&l,&r); int pos=query(root[l-1],root[r],(r-l+1)/2,1,tot+1); if(!pos) puts("no"); else printf("yes %d\n",lishi[pos]); }}int main(){// freopen("p3.in","r",stdin); iread(); iwork(); return 0;}
0 0
- BZOJ2223(可持久化线段树)
- 可持久化线段树
- 可持久化线段树
- 可持久化线段树
- 可持久化线段树
- 可持久化线段树
- 可持久化线段树
- 可持久化线段树
- hdu 4348 可持久化线段树
- [Spoj]MKTHNUM 可持久化线段树
- HDU4866 Shooting (可持久化线段树)
- 可持久化线段树 HDU4866 Shooting
- 【Codechef ForbidenSum】可持久化线段树
- 可持久化线段树(poj2104/hdu4866)
- 可持久化线段树HDU2665、bzoj3207
- 可持久化线段树笔记
- 【模板】可持久化线段树
- *hdu 2665 (可持久化线段树)
- BZOJ4410
- C结构体中赋值使用的冒号和点号
- codeforces2016
- GuideMap 登录界面 详细文档(三)
- 每个Xcode开发者应该知道的七个使用技巧
- BZOJ2223(可持久化线段树)
- Leet Code OJ 189. Rotate Array [Difficulty: Easy]
- Web标准
- 仿网易选项卡的实现
- hdu 1505 动态规划
- BZOJ2101(DP)
- CentOS命令行写c程序
- Linux系统运维/Bash/5-4-Bash操作环境
- Double Queue(SET水题)