• 第一场多校


    #include <bits/stdc++.h>
    #define fi first
    #define se second
    #define lson l,m,rt<<1
    #define rson m+1,r,rt<<1|1
    #define pb push_back
    #define MP make_pair
    #define FIN freopen("in.txt","r",stdin)
    #define fuck(x) cout<<"["<<x<<"]"<<endl
    using namespace std;
    typedef long long LL;
    typedef pair<int,int>pii;
    const int mod=1e9+7;
    const int MX=1e5+7;
    
    int n,m;
    int a[MX],pos[MX];
    int num[MX],res;
    struct que{
        int l,r,id;
        int ans;
    }q[MX];
    bool cmp(que a,que b){
        if(pos[a.l]!=pos[b.l]) return a.l<b.l;
        return a.r<b.r;
    }
    void add(int x){
        res+=num[x]==0?1:0;
        num[x]++;
    }
    void del(int x){
        num[x]--;
        res-=num[x]==0?1:0;
    }
    
    int main(){
        while(~scanf("%d%d",&n,&m)){
            memset(num,0,sizeof(num));
            res=0;
            int block=(int)sqrt(n);
            for(int i=1;i<=n;i++){
                scanf("%d",&a[i]);
                pos[i]=(i-1)ock;
            }
            for(int i=1;i<=m;i++){
                scanf("%d%d",&q[i].l,&q[i].r);
                q[i].id=i;
            }
            sort(q+1,q+m+1,cmp);
            int l=0,r=n+1;
            for(int i=1;i<=m;i++){
                while(r>q[i].r) add(a[--r]);
                while(r<q[i].r) del(a[r++]);
                while(l<q[i].l) add(a[++l]);
                while(l>q[i].l) del(a[l--]);
                q[q[i].id].ans=res;
            }
            for(int i=1;i<=m;i++)
                printf("%d
    ",q[i].ans);
        }
        return 0;
    }
    
    
  • 相关阅读:
    策略模式(Strategy)
    java.lang.reflect.Method
    java.lang.reflect.Constructor
    快速导航
    Java反射机制(Reflection)
    java.lang.Class
    java.lang.reflect.Field
    java常用类 --- Object
    vuex:弄懂mapState、mapGetters、mapMutations、mapActions
    超详细MySQL安装及基本使用教程
  • 原文地址:https://www.cnblogs.com/Cwolf9/p/9440123.html
Copyright © 2020-2023  润新知