洛谷 p2681 众数

题目如下:

 

 思路:可以用散列来写 值得注意的是他的下标有10^9 如果我们用一般的数组 array vector 肯定会超时 

    毕竟你申请了人家那么大的空间对嘛 

    这里可以使用map容器 

代码如下:

#include<cstdio> 
#include<iostream>
#include<map>
using namespace std;
int main(){
    int ans[1001];
    int n,m,flag,x,y;
    cin>>n>>m;
    for(int i=0;i<n;i++){
        cin>>ans[i];
        }
while(m--) {
    map<int,int>b;
    int maxn=-1,card=1999;
    cin>>flag>>x>>y;    
    if(!flag){
        for(int i=x-1;i<y;i++)
        {  b[ans[i]]++;
            if(b[ans[i]]>maxn){
                maxn=b[ans[i]];                
                card=ans[i] ;
            }
            else if(b[ans[i]]==maxn)
            {     if(card>ans[i])
                card=ans[i];
            }
        }
        cout<<card<<endl;
        }
    else
        ans[x-1]=y;
    }
    return 0;
}

 

posted @ 2020-04-20 11:13  miao-xixixi  阅读(186)  评论(0编辑  收藏  举报