• P3709 大爷的字符串题


    我是题面

    神奇的阅读题,没有良好的语文功底可能就真的要拿10分了

    很明显这道题的意思是求区间众数出现的次数的相反数

    怎么维护呢?又没有强制在线,上莫队啊

    (cnt[i])记录(i)出现的次数,(sum[i])记录出现i次的数有几个,(maxa)记录答案

    好了,这道题我们做完了

    下面放代码

    #include<algorithm>
    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<cctype>
    #include<cmath>
    #define ll long long
    #define gc getchar
    #define maxn 200005
    using namespace std;
    
    inline ll read(){
    	ll a=0;int f=0;char p=gc();
    	while(!isdigit(p)){f|=p=='-';p=gc();}
    	while(isdigit(p)){a=(a<<3)+(a<<1)+(p^48);p=gc();}
    	return f?-a:a;
    }int n,m,c1,block,a[maxn],b[maxn],ans[maxn];
    
    struct ahaha{
    	int id,l,r;
    	inline bool friend operator<(const ahaha x,const ahaha y){
    		if(x.l/block!=y.l/block)return x.l<y.l;
    		return x.r<y.r;
    	}
    }q[maxn];
    
    int maxa,cnt[maxn],sum[maxn];
    inline void add(int x){
    	--sum[cnt[x]];++cnt[x];
    	++sum[cnt[x]];maxa=max(maxa,cnt[x]);  //如果有一个数出现次数比maxa多了,修改maxa
    }
    inline void del(int x){
    	--sum[cnt[x]];--cnt[x];
    	++sum[cnt[x]];if(!sum[maxa])--maxa;  //如果没有出现maxa次的数了,maxa-1
    }  //为什么可以直接-1呢?因为如果没有出现这么多次的数了要么是变多了,要么是变少了,出现在这,肯定是变少了呀
    
    int main(){
    	n=read();m=read();block=sqrt(n);
    	for(int i=1;i<=n;++i)
    		a[i]=b[i]=read();
    	sort(b+1,b+n+1);c1=unique(b+1,b+n+1)-b-1;
    	for(int i=1;i<=n;++i)
    		a[i]=lower_bound(b+1,b+c1+1,a[i])-b;
    	for(int i=1;i<=m;++i)
    		q[i]={i,read(),read()};
    	sort(q+1,q+m+1);
    	int l=q[1].l,r=l-1;
    	for(int i=1;i<=m;++i){
    		while(l<q[i].l)del(a[l++]);
    		while(l>q[i].l)add(a[--l]);
    		while(r<q[i].r)add(a[++r]);
    		while(r>q[i].r)del(a[r--]);
    		ans[q[i].id]=-maxa;
    	}
    	for(int i=1;i<=m;++i)
    		printf("%d
    ",ans[i]);
    	return 0;
    }
    

    阅读题,代码很简单,所以自己打呗,不要复制哦

  • 相关阅读:
    Java中的IO基本用法
    Java中的字符串
    centos
    Linux 常用命令
    rand随机
    auto.js 学习
    毕业了!!!
    论文的查找
    kill的使用
    安装交叉编译工具arm-linux-gcc-4.3.2 并且修改环境变量
  • 原文地址:https://www.cnblogs.com/hanruyun/p/10250532.html
Copyright © 2020-2023  润新知