zoukankan      html  css  js  c++  java
  • LUOGU P3709 大爷的字符串题

    传送门

    解题思路

    看了五分钟不知道题目在说啥。。。(语文题),后来才知道其实要求的区间众数(tmd要叙述这么麻烦吗)。因为是离线可做,所以自然想到莫队,开个桶num[x],表示个数为x的有几个数,再开个cnt[x]表示x这个数出现的次数,就可以愉快的A了。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    
    using namespace std;
    const int MAXN = 200005;
    
    inline int rd(){
        int x=0,f=1;char ch=getchar();
        while(!isdigit(ch)) {f=ch=='-'?0:1;ch=getchar();}
        while(isdigit(ch))  {x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
        return f?x:-x;
    }
    
    int n,m,cpy[MAXN],a[MAXN],bl[MAXN],siz,rk[MAXN],cnt[MAXN],num[MAXN];
    int ans[MAXN],Ans;
    
    struct Data{
        int l,r,id;
    }q[MAXN];
    
    inline bool cmp(Data A,Data B){
        if(bl[A.l]!=bl[B.l]) return bl[A.l]<bl[B.l];
        return A.r<B.r;
    }
    
    inline void Del(int x){
        num[cnt[x]]--;if(Ans==cnt[x] && !num[cnt[x]]) Ans--;
        cnt[x]--;num[cnt[x]]++;
    }
    
    inline void Add(int x){
        num[cnt[x]]--;if(Ans==cnt[x]) Ans++;
        cnt[x]++;num[cnt[x]]++;
    }
    
    int main(){
        n=rd(),m=rd();siz=sqrt(n)+1;
        for(int i=1;i<=n;i++) a[i]=rd(),cpy[i]=a[i],bl[i]=i/siz+1;
        sort(cpy+1,cpy+1+n);int u=unique(cpy+1,cpy+1+n)-cpy-1;
        for(int i=1;i<=n;i++) rk[i]=lower_bound(cpy+1,cpy+1+u,a[i])-cpy;
        for(int i=1;i<=m;i++)
            q[i].l=rd(),q[i].r=rd(),q[i].id=i;
        sort(q+1,q+1+m,cmp);
        int L=1,R=0;
        for(int i=1;i<=m;i++){
            while(L<q[i].l) {Del(rk[L]);L++;}
            while(L>q[i].l) {L--;Add(rk[L]);}
            while(R<q[i].r) {R++;Add(rk[R]);}
            while(R>q[i].r) {Del(rk[R]);R--;}
            ans[q[i].id]=Ans;
        }
        for(int i=1;i<=m;i++) printf("-%d
    ",ans[i]);
        return 0;
    }
    View Code
  • 相关阅读:
    挑选公司--评分--给未来3年估价
    股票投资步骤
    指数基金怎么选
    指数基金梳理
    android fragment 生命周期
    mac-jmeter安装
    linux apline
    go mod 超时问题
    nginx: [alert] kill(5272, 15) failed (3: No such process) 启动不了,apache搞得鬼
    时间复杂度和空间复杂度1
  • 原文地址:https://www.cnblogs.com/sdfzsyq/p/9687435.html
Copyright © 2011-2022 走看看