zoukankan      html  css  js  c++  java
  • bzoj3524: [Poi2014]Couriers

    主席树简单题。(%Xs酱。我的主席树就跟他?(她?写了。

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    #define REP(i,s,t) for(int i=s;i<=t;i++)
    #define clr(x,c) memset(x,c,sizeof(x))
    int read(){
    	int x=0;char c=getchar();bool f=true;
    	while(!isdigit(c)) c=getchar();
    	while(isdigit(c)) x=x*10+c-'0',c=getchar();
    	return f?x:-x;
    } 
    struct node{
    	int lson,rson,cnt;
    };
    node nodes[10000000];
    int pt=0,root[500005];
    void insert(int a,int &b,int x,int l,int r){
    	nodes[++pt]=nodes[a],b=pt,++nodes[b].cnt;
    	if(l==r) return ;
    	int mid=(l+r)>>1;
    	if(x<=mid) insert(nodes[a].lson,nodes[b].lson,x,l,mid);
    	else insert(nodes[a].rson,nodes[b].rson,x,mid+1,r);
    }
    int query(int a,int b,int x,int l,int r){
    	if(l==r) return l;
    	int mid=(l+r)>>1;
    	if(nodes[nodes[b].lson].cnt-nodes[nodes[a].lson].cnt>x) 
    	  return query(nodes[a].lson,nodes[b].lson,x,l,mid);
    	if(nodes[nodes[b].rson].cnt-nodes[nodes[a].rson].cnt>x)
    	  return query(nodes[a].rson,nodes[b].rson,x,mid+1,r);
    	return 0;
    }
    int main(){
    	int u,v,d,n=read(),m=read();
    	REP(i,1,n) u=read(),insert(root[i-1],root[i],u,1,n);
    	REP(i,1,m){
    		u=read(),v=read();
    		if(u>v) swap(u,v);
    		printf("%d
    ",query(root[u-1],root[v],(v-u+1)>>1,1,n));
    	}
    	return 0;
    }
    

      

    3524: [Poi2014]Couriers

    Time Limit: 20 Sec  Memory Limit: 256 MB
    Submit: 1677  Solved: 584
    [Submit][Status][Discuss]

    Description

    给一个长度为n的序列a。1≤a[i]≤n。
    m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2。如果存在,输出这个数,否则输出0。

    Input

    第一行两个数n,m。
    第二行n个数,a[i]。
    接下来m行,每行两个数l,r,表示询问[l,r]这个区间。

    Output

    m行,每行对应一个答案。

    Sample Input

    7 5
    1 1 3 2 3 4 3
    1 3
    1 4
    3 7
    1 7
    6 6

    Sample Output

    1
    0
    3
    0
    4

    HINT

    【数据范围】

    n,m≤500000


    2016.7.9重设空间,但未重测!


    Source

    [Submit][Status][Discuss]
  • 相关阅读:
    搜索回车跳转页面
    登录验证码
    【排序算法】排序算法之插入排序
    PAT 乙级 1044 火星数字 (20 分)
    PAT 甲级 1035 Password (20 分)
    PAT 甲级 1041 Be Unique (20 分)
    PAT 甲级 1054 The Dominant Color (20 分)
    PAT 甲级 1027 Colors in Mars (20 分)
    PAT 甲级 1083 List Grades (25 分)
    PAT 甲级 1005 Spell It Right (20 分)
  • 原文地址:https://www.cnblogs.com/fighting-to-the-end/p/5712943.html
Copyright © 2011-2022 走看看