题目背景
警告:数据可能存在加强
题目描述
某次科研调查时得到了nn个自然数,每个数均不超过1500000000(1.5 \times ^)(1.5× )。已知不相同的数不超过1000010000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。 输入输出格式
输入格式:
共n+1n+1行。 第一行是整数nn,表示自然数的个数; 第22至n+1n+1每行一个自然数。 输出格式:
共mm行(mm为nn个自然数中不相同数的个数),按照自然数从小到大的顺序输出。 每行输出22个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。 输入输出样例
输入样例#: 输出样例#: 说明
%的数据满足:≤n≤
%的数据满足:≤n≤
%的数据满足:≤n≤,每个数均不超过1500000000(1.5×)

首先,要注意这道题的数据范围
其次,个人认为本题解是最适合萌新的
看别的大佬都用 map 或 set 之类的怪东西,个人认为一个一维数组就完全可以AC掉这道题
我感觉我的代码应该算快的了用了321ms 1448KB

先用一个快排

然后进行以下处理(解释都在核心代码里了~QAQ~)

for(int i=;i<=n;i++)
{
int sum1=;//看看有几个数是相同的
for(int j=i;j<=n;j++)//从i一直找
{
if(s[j]==s[j+])//如果相同
{
sum1++;//计数器加一
}
else
{
break;//不然就直接退出,避免出现另外两个数相同的情况
}
}
cout<<s[i]<<" "<<sum1+<<endl;//输出
i+=sum1;//相当于将一样的数算在一起,然后直接到下一个不相等的数的位置
}

以下是代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<map>
#include<algorithm> using namespace std; int s[]; int main()
{
int n;
int maxn=-;
cin>>n;
for(int i=;i<=n;i++)
{
cin>>s[i];
}
sort(s+,s+n+);
for(int i=;i<=n;i++)
{
int sum1=;
//cout<<s[i]<<endl;
for(int j=i;j<=n;j++)
{
if(s[j]==s[j+])
{
sum1++;
}
else
{
break;
}
}
cout<<s[i]<<" "<<sum1+<<endl;
i+=sum1;
}
return ;
}

最新文章

  1. MVC Razor视图引擎的入门
  2. UNIX网络编程——getsockname和getpeername函数
  3. dev中控件属性设置
  4. nodejs操作mongodb数据库封装DB类
  5. GridView与CheckBox完美结合
  6. lua中得栈
  7. DateGridView中添加下拉框列并实现数据绑定、更改背景色
  8. phpcms v9 企业黄页系统发布没有表单出现的解决方案
  9. EF4.0和EF5.0增删改查的写法区别及执行Sql的方法
  10. ImageList半透明,Alpha通道bug处理。
  11. QT使用WOL实现远程一键开机(局域网)
  12. Scrum笔记
  13. MongoDB的导入与导出
  14. Web 安全漏洞之 XSS 攻击
  15. [Jenkins] 如何修改jenkins上的环境变量
  16. javascript中break与continue,及return的区别
  17. (C/C++学习笔记) 二十三. 运行时类型识别
  18. FWT学习笔记
  19. 400+节点的 Elasticsearch 集群运维
  20. 解决Mac上adb: command not found问题

热门文章

  1. Quartz基础调度框架-第二篇服务
  2. CXF 教程(一)
  3. Dubbo(三):框架设计
  4. HTML不换行,多余用省略号代替
  5. 记一次针对Centos的入侵分析
  6. Laravel 实现前后台用户分离登录
  7. Emmagee的基本使用
  8. Django 之 cookie &amp; session
  9. yum localinstall 解决本地 rpm 包的依赖问题
  10. 【使用DIV+CSS重写网站首页案例】CSS引入方式