luogu P1097 统计数字

题目描述

某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*10^9)。已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。

输入输出格式

输入格式:

输入文件count.in包含n+1行;

第一行是整数n,表示自然数的个数;

第2~n+1每行一个自然数。

输出格式:

输出文件count.out包含m行(m为n个自然数中不相同数的个数),按照自然数从小到大的顺序输出。每行输出两个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。

输入输出样例

输入样例#1:

8
2
4
2
4
5
100
2
100

输出样例#1:

2 3
4 2
5 1
100 2

说明

40%的数据满足:1<=n<=1000

80%的数据满足:1<=n<=50000

100%的数据满足:1<=n<=200000,每个数均不超过1500 000 000(1.5*109)

NOIP 2007 提高第一题

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>

using namespace std;
const int N=300010;

string s[N];
int n;

inline bool cmp(string a,string b)
{
    if(a.length()!=b.length())
        return a.length()<b.length();
    else
        for(int i=0;i<a.length();i++)
            if(a[i]!=b[i])
                return a[i]<b[i];
}

int main()
{
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        cin>>s[i];
    sort(s+1,s+n+1,cmp);
    for(int i=1;i<=n;i++)
    {
        int tot=1;
        for(int j=i+1;s[j]==s[i];j++)
            tot++;
        i+=tot-1;
        cout<<s[i]<<" "<<tot<<endl;
    }
    return 0;
}

  

时间: 2024-11-08 19:18:33

luogu P1097 统计数字的相关文章

洛谷—— P1097 统计数字

https://www.luogu.org/problem/show?pid=1097 题目描述 某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*10^9).已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果. 输入输出格式 输入格式: 输入文件count.in包含n+1行: 第一行是整数n,表示自然数的个数: 第2~n+1每行一个自然数. 输出格式: 输出文件count.out包含m行(m为n个自然数中不相

洛谷 P1097 统计数字(NOIp2007提高组T1)

题目描述 某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*10^9).已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果. 输入输出格式 输入格式: 输入文件count.in包含n+1行: 第一行是整数n,表示自然数的个数: 第2~n+1每行一个自然数. 输出格式: 输出文件count.out包含m行(m为n个自然数中不相同数的个数),按照自然数从小到大的顺序输出.每行输出两个整数,分别是自然数和该数出现的次

统计数字

原题链接:https://www.luogu.org/problem/show?pid=1097 纪念开学第一天,随手A掉一道大水题纪念一下. 题意非常明显,让我们排序并且统计数字,但数据量较大. 一开始想到最暴力的桶排序,但发现桶排序开不了那么大的数组,A不掉. 遂STL快排解决之.问题就在如何统计重复数字上. 受到夏令营day1t1启发,快排后统计数字,每次和前边的进行比较,如果相等则当前数字重复,开一个vis数组打上标记,开一个b数组外带一个附带指针t,用来记录重复数字重复出现了几次.如果

统计数字noip2007

7909:统计数字 总时间限制:  1000ms 内存限制:  65536kB 描述 某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109).已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果. 输入 包含n+1行:第一行是整数n,表示自然数的个数:第2~n+1每行一个自然数. 40%的数据满足:1<=n<=1000:80%的数据满足:1<=n<=50000:100%的数据满足:1<=n

7909:统计数字

7909:统计数字 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109).已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果. 输入 包含n+1行:第一行是整数n,表示自然数的个数:第2~n+1每行一个自然数. 40%的数据满足:1<=n<=1000:80%的数据满足:1<=n<=50000:100%的

1164 统计数字

1164 统计数字 2007年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题解 题目描述 Description [问题描述]某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109).已知不相同的数不超过10000 个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果. 输入描述 Input Description 第1行是整数n,表示自然数的个数.第2~n+1 行每行一个自

统计数字在排序数组中出现的次数

统计一个数字在排序数组中出现的次数: 可定义一个用于统计数字个数的变量count,然后从前往后遍历数组,看是否与所求数字相等,如果相等,则count++: 下面贴出代码: public class Solution {     public int GetNumberOfK(int [] array , int k) {         int count = 0;        for(int i=0;i<array.length;i++){            if(array[i]==k

腾讯面试题(统计数字出现的次数问题)

时间:2014.04.28 地点:基地二楼 日志:知道自己没有尝试着去试图改变,晓得错了~~ ---------------------------------------------------------------- 一.题目: 给你10分钟时间,根据上排给出十个数,在其下排填出对应的十个数 要求下排每个数都是先前上排那十个数在下排出现的次数. 上排的十个数如下: [0,1,2,3,4,5,6,7,8,9] 举一个例子, 数值:0,1,2,3,4,5,6,7,8,9 分配:6,2,1,0,

luogu P1026 统计单词个数

题目链接 luogu P1026 统计单词个数 题解 贪心的预处理母本串从i到j的最大单词数 然后dp[i][j] 表示从前i个切了k次最优解 转移显然 代码 #include<cstdio> #include<algorithm> #include<cstring> const int maxn = 507; char a[maxn]; char s[maxn],t[maxn]; int dp[maxn][55]; int n,k,q; int num[maxn][m