BJFU 1068

描述

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

输入

包含n+1行:

第1行是整数n1<=n<=200000,表示自然数的个数。

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

输出

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

样例输入

8242451002100

样例输出

2 34 25 1100 2

题目来源

090824210

快排吧直接,计数用二维数组实现。↓

 1 #include <stdio.h>
 2
 3 void soort(long* a,long left,long right);
 4 int main()
 5 {
 6     long n,i,j;
 7     while(scanf("%ld",&n)!=EOF)
 8     {
 9         long ret[200000]={0};
10         for(i=0;i<n;i++) scanf("%ld",&ret[i]);
11         soort(ret,0,n-1);
12         long sum[10000][2]={0};
13         sum[0][0]=ret[0];
14         sum[0][1]=1;
15         for(i=1,j=0;i<n;i++)
16         {
17             if(ret[i]==ret[i-1]) sum[j][1]++;
18             else
19             {
20                 sum[++j][0]=ret[i];
21                 sum[j][1]++;
22             }
23         }
24         for(i=0;i<10000;i++) if(sum[i][1]) printf("%ld %ld\n",sum[i][0],sum[i][1]);
25     }
26     return 0;
27 }
28 void soort(long* a,long left,long right)
29 {
30     if(left>=right) return;
31     long temp;
32     long i = left;
33     long j = right;
34     long key = a[left];
35     while(i<j)
36     {
37         while(i<j&&key<=a[j]) j--;
38         temp = a[i];
39         a[i]=a[j];
40         a[j]=temp;
41         while(i<j&&key>=a[i]) i++;
42         temp = a[i];
43         a[i] = a[j];
44         a[j] = temp;
45     }
46     soort(a,left,i-1);
47     soort(a,i+1,right);
48 }
时间: 2024-08-25 07:07:41

BJFU 1068的相关文章

pat 1068 动态规划/Fina More Conis

1068. Find More Coins (30) Eva loves to collect coins from all over the universe, including some other planets like Mars. One day she visited a universal shopping mall which could accept all kinds of coins as payments. However, there was a special re

51nod 1068 Bash游戏 V3 博弈

1068 Bash游戏 V3 题目来源: Ural 1180 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 有一堆石子共有N个.A B两个人轮流拿,A先拿.每次拿的数量只能是2的正整数次幂,比如(1,2,4,8,16....),拿到最后1颗石子的人获胜.假设A B都非常聪明,拿石子的过程中不会出现失误.给出N,问最后谁能赢得比赛. 例如N = 3.A只能拿1颗或2颗,所以B可以拿到最后1颗石子.(输入的N可能为大数) Input 第1行:一个

poj 1068 Parencodings

Parencodings Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 22797   Accepted: 13363 Description Let S = s1 s2...s2n be a well-formed string of parentheses. S can be encoded in two different ways: q By an integer sequence P = p1 p2...pn

Poj OpenJudge 1068 Parencodings

1.Link: http://poj.org/problem?id=1068 http://bailian.openjudge.cn/practice/1068 2.Content: Parencodings Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 20077   Accepted: 12122 Description Let S = s1 s2...s2n be a well-formed string of p

[ACM] POJ 1068 Parencodings(模拟)

Parencodings Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 19352   Accepted: 11675 Description Let S = s1 s2...s2n be a well-formed string of parentheses. S can be encoded in two different ways: q By an integer sequence P = p1 p2...pn

hdu - 1068 Girls and Boys (二分图最大独立集+拆点)

http://acm.hdu.edu.cn/showproblem.php?pid=1068 因为没有指定性别,所以要拆点,把i拆分i和i’ 那么U=V-M (M是最大匹配,U最大独立集,V是顶点数) 2U=2V-2M  所以 U=n-M'/2. (没怎么看明白)  但是不这样会wa. 1 #include <iostream> 2 #include <cstdio> 3 #include <cmath> 4 #include <vector> 5 #inc

[HDU] 1068 Girls and Boys(二分图最大匹配)

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1068 本题求二分图最大独立点集.因为最大独立点集=顶点数-最大匹配数.所以转化为求最大匹配.因为没有给出男女,所以每个人都用了两遍,所以结果应该除以2. 1 #include<cstdio> 2 #include<iostream> 3 #include<string.h> 4 #include<algorithm> 5 #include<math.h&g

九度OJ 1068 球的半径和体积 (模拟)

题目1068:球的半径和体积 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4797 解决:1696 题目描述: 输入球的中心点和球上某一点的坐标,计算球的半径和体积 输入: 球的中心点和球上某一点的坐标,以如下形式输入:x0 y0 z0 x1 y1 z1 输出: 输入可能有多组,对于每组输入,输出球的半径和体积,并且结果保留三位小数 样例输入: 0 0 0 1 1 1 样例输出: 1.732 21.766 提示: 为避免精度问题,PI值请使用arccos(-1). #include

hihoCoder #1068 RMQ-ST算法

#1068 : RMQ-ST算法 Time Limit:10000ms Case Time Limit:1000ms Memory Limit:256MB 描述 小Hi和小Ho在美国旅行了相当长的一段时间之后,终于准备要回国啦!而在回国之前,他们准备去超市采购一些当地特产——比如汉堡(大雾)之类的回国. 但等到了超市之后,小Hi和小Ho发现者超市拥有的商品种类实在太多了——他们实在看不过来了!于是小Hi决定向小Ho委派一个任务:假设整个货架上从左到右拜访了N种商品,并且依次标号为1到N,每次小H