这题怎么写呀? 谢谢

P5705 【深基2.例7】数字反转

Zky20110607 @ 2023-02-25 14:27:40

数据统计(tongji.cpp)

【题目描述】
给定一个长度为n的整型数组a,统计数组中每个数字出现的次数,并打印输出。
【输入格式】
两行,第一行是一个正整数n表示数组长度,第二行包含n个整数表示数组元素;
数组元素可能有正数也可能有负数。
【输出格式】
若干行,每行包含两个整数,第一个是数组中数字的值,第二个是该数字出现的次数;
数组元素升序排列。
【样例输入】
10
2 2 2 1 -4 -4 -4 -4 1 2
【样例输出】
-4 4
1 2
2 4


by C20220215 @ 2023-02-25 14:33:11

用multiset可以啊


by Luban @ 2023-02-25 14:34:25

输出随机数谢谢喵

我不会做捏)


by hyperhypercubic @ 2023-02-25 14:35:43

输出随机数谢谢喵

我不会做捏)


by OldDriverTree @ 2023-02-25 14:43:12

@Zky20110607

  1. 没给数据范围
  2. 发错了板块

by C20220215 @ 2023-02-25 14:43:21

给份代码:

#include <iostream>
#include <algorithm>
#include <map>
#include <cmath>
#include <vector>
#include <set>
#define ll long long
using namespace std;
multiset <ll> m;
ll n, a;
int main()
{
    cin >> n;
    while (n--)
    {
        cin >> a;
        m.insert(a);
    }
    for (multiset <ll>::iterator i = m.begin(); i != m.end(); i++)
    {
        multiset <ll>::iterator k = i;
        ++k;
        if (k != m.end() && (*k) != (*i)) cout << (*i) << " " << m.count(*i) << endl;
    }
    multiset <ll>::iterator i = m.end();
    i--;
    cout << (*i) << " " << m.count(*i) << endl;
}

by yinbe @ 2023-02-25 15:23:34

@Zky20110607 我觉得可以给数处理一下然后桶排,请给一下数据范围


by GANYUE @ 2023-04-04 23:17:50

#include <bits/stdc++.h>
#define ll long long
using namespace std;
multiset <ll> m;
ll n, a;
int main()
{
    cin >> n;
    while (n--)
    {
        cin >> a;
        m.insert(a);
    }
    for (multiset <ll>::iterator i = m.begin(); i != m.end(); i++)
    {
        multiset <ll>::iterator k = i;
        ++k;
        if (k != m.end() && (*k) != (*i)) cout << (*i) << " " << m.count(*i) << endl;
    }
    multiset <ll>::iterator i = m.end();
    i--;
    cout << (*i) << " " << m.count(*i) << endl;
}

|