4 条题解

  • 2
    @ 2024-2-10 18:58:15

    不是要用mapmap吗?为什么我看题解区好像没几个人用mapmap

    AC CodeAC~Code

    #include <bits/stdc++.h>
    #define ll long long
    #define re register int
    using namespace std;
    map<int, int> mp;
    int n;
    ll x;
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        cout.tie(0);
        cin >> n;
        for (re i = 1; i <= n; i++)
        {
            cin >> x;
            mp[x]++;
        }
        for (auto b : mp)
            cout << b.first << " " << b.second << endl;
        return 0;
    }
    
    • 0
      @ 2023-10-8 21:44:17
      #include<bits/stdc++.h>
      using namespace std;
      int a[200020];
      int main(){
      	int n;cin>>n;
      	for(int i=0;i<n;i++){
      		cin>>a[i];
      	}
      	sort(a,a+n);
      	int c=1;
      	for(int i=0;i<n;i++){
      		if(a[i]==a[i+1]){
      			c++;
      		}else{
      			cout<<a[i]<<" "<<c<<endl;
      			c=1;
      		}
      	}
      	return 0;
      }
      
      • 0
        @ 2022-9-11 18:48:29

        用map记录次数,再用一个数组存储不相同的自然数,最后输出即可,记得开 long long。

        还有最重要的一件事:

        Sorting!Sorting!!Sorting!!!

        并按照自然数从小到大的顺序输出统计结果。

        • @ 2024-2-10 18:59:06

          不是会自动排序吗?@

        • @ 2024-2-10 19:01:00

          mapmap不是映射吗?如果我记得不错好像是直接当数组用的(我不是大佬,为什么还要在开一个数组来存储不相同的自然数啊?

      • -2
        @ 2023-5-2 11:29:56
        #include<iostream>
        using namespace std;
        int a[200001],tmp[200001],i,j,n;
        void msort(int l,int r) //归并排序 
        {
        	int mid;
        	if(l==r) return;
        	mid=(l+r)/2;
        	msort(l,mid);
        	msort(mid+1,r);
        	int i=l,j=mid+1,k=l;
        	while(i<=mid&&j<=r)
        	{
        		if(a[i]<=a[j])
        			tmp[k++]=a[i++];
        		else
        		{
        			tmp[k++]=a[j++];
        		}
        	}
        	while(i<=mid)
        		tmp[k++]=a[i++];
        	while(j<=r)
        		tmp[k++]=a[j++];
        	for(i=l;i<=r;i++)
        		a[i]=tmp[i];
        	return;
        }
        int main()
        {
        	cin>>n;
        	for(i=1;i<=n;i++)
        		cin>>a[i];
        	
        	msort(1,n);
        	int k=-1,count=0;//k表示前面出现的自然数,count统计自然数出现的次数 
        	for(i=1;i<=n;i++)
        	{
        		if(a[i]!=k)//遇到新的自然数
        		{
        			if(i>1)//遇到的不是第一次出现的自然数,输出前面的自然数 
        			{
        				cout<<k<<" "<<count<<endl;
        			}
        			k=a[i];//k记录新出现的自然数的值 
        			count=1; //count记录新出现的自然数出现的次数,初始化为1
        
        		}
        		else//即a[i]=k的情况 
        		{
        			count++;
        		} 
        	}
        	cout<<k<<" "<<count<<endl;//输出最后一个自然数出现的次数 
            return 0;
        }
        
        
        
        
        • 1

        信息

        ID
        1098
        时间
        1000ms
        内存
        128MiB
        难度
        3
        标签
        递交数
        33
        已通过
        21
        上传者