zoukankan      html  css  js  c++  java
  • 数次统计 NOJ 1601

                                                                                                                                          数次统计
    时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
    总提交 : 603            测试通过 : 89 

    题目描述

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

    输入

    多组输入数据

        每组数据包含n+1行:

        第1行是整数n,表示自然数的个数。

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

    输出

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

    样例输入

    8
    2
    4
    2
    4
    5
    100
    2
    100

    样例输出

    2 3
    4 2
    5 1
    100 2

    提示

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

    题目来源

    Yang Meng


    做题感受:==刚开始自己想开大数组==,发现失败,后来转战结构体,定过两个变量,一个用来存储值,一个用来存个数。后来发现输出很难控制,失败==,看了OJ上的讨论版,改成map,发现TL,转战互联网解题方法,稍微改了一下。

    实现代码:

    #include <stdio.h>
    #include <stdlib.h>
    int n;
    int a[200000+1];
    int cmp(const void *a,const void *b){
        return *(int *)a-*(int *)b;
    }
    int main(){
       // freopen("count.in","r",stdin);
       // freopen("count.out","w",stdout);
        while(scanf("%d",&n)==1){
        for (int i=1;i<=n;i++){
            scanf("%d",&a[i]);
        }
        qsort(a+1,n,sizeof(int),cmp);
        int cnt=0,s=0;
        for (int i=1;i<=n;i++){
            if (i==1){
                      s=a[i];
                      cnt++;
                      continue;
            }
            if (s!=a[i]){
                         printf("%d %d
    ",s,cnt);
                         s=a[i];
                         cnt=1;
            }
            else if (s==a[i]) cnt++;
        }
        printf("%d %d
    ",s,cnt);
        }
        return 0;
    }

    数次统计

    时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
    总提交 : 603            测试通过 : 89 

    题目描述

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

    输入

    多组输入数据

        每组数据包含n+1行:

        1行是整数n,表示自然数的个数。

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

    输出

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

    样例输入

    8
    2
    4
    2
    4
    5
    100
    2
    100

    样例输出

    2 3
    4 2
    5 1
    100 2

    提示

    数据满足:1<=n<=200000,每个数均不超过1 500 000 0001.5*109

    题目来源

    Yang Meng


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    eclipse下c/cpp " undefined reference to " or "launch failed binary not found"问题
    blockdev 设置文件预读大小
    宝宝语录
    CentOS修改主机名(hostname)
    subprocess报No such file or directory
    用ldap方式访问AD域的的错误解释
    英特尔的VTd技术是什么?
    This virtual machine requires the VMware keyboard support driver which is not installed
    Linux内核的文件预读详细详解
    UNP总结 Chapter 26~29 线程、IP选项、原始套接字、数据链路访问
  • 原文地址:https://www.cnblogs.com/Tobyuyu/p/4965516.html
Copyright © 2011-2022 走看看