QAQ为什么GG了

P3567 [POI2014] KUR-Couriers

@[皎月半洒花](/space/show?uid=28313) A辣,开心
by かなで @ 2018-06-26 18:03:32


好像没啥坑啊 贴代码(巨丑见谅) ```cpp #include<bits/stdc++.h> using namespace std; const int N=500001; int rk[N],rt[N],num[N],ord; struct p{int x,id;}a[N]; struct T{int l,r,v;}tree[N*20]; inline bool cmp(p a,p b){return a.x<b.x;} int build(int s,int t){ int r=++ord; if(s!=t){ int mid=s+t>>1; tree[r].l=build(s,mid),tree[r].r=build(mid+1,t); } return r; } int insert(int pre,int x,int s,int t){ int r=++ord; tree[r].l=tree[pre].l,tree[r].r=tree[pre].r,tree[r].v=tree[pre].v+1; if(s!=t){ int mid=s+t>>1; if(x<=mid) tree[r].l=insert(tree[pre].l,x,s,mid); else tree[r].r=insert(tree[pre].r,x,mid+1,t); } return r; } int query(int x,int y,int s,int t,int k){ if(s==t) return s; int mid=s+t>>1; if(tree[tree[y].l].v-tree[tree[x].l].v>=k) return query(tree[x].l,tree[y].l,s,mid,k); else if(tree[tree[y].r].v-tree[tree[x].r].v>=k) return query(tree[x].r,tree[y].r,mid+1,t,k); else return 0; } int main(){ int n,m,s=0,x,y,z; scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d",&a[i].x),a[i].id=i; sort(a+1,a+n+1,cmp); for(int i=1;i<=n;i++){ if(a[i].x!=a[i-1].x) a[++s].x=a[i].x; rk[a[i].id]=s; } build(1,s); for(int i=1;i<=n;i++) rt[i]=insert(rt[i-1],rk[i],1,s); while(m--){ scanf("%d%d",&x,&y); printf("%d\n",a[query(rt[x-1],rt[y],1,s,y-x+3>>1)]); } return 0; } ```
by かなで @ 2018-06-26 18:06:02


@[かなで](/space/show?uid=100018) 蟹蟹QAQ……是我的$N$和$Len$写挂了的缘故……
by 皎月半洒花 @ 2018-06-26 20:20:54


@[皎月半洒花](/space/show?uid=28313) 哎..Rk1就很舒服
by かなで @ 2018-06-26 21:59:06


上一页 |