码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • [洛谷] P1097 [NOIP2007 提高组] 统计数字


    P1097 [NOIP2007 提高组] 统计数字

    • 1.题目
      • 提示
    • 2.分析
    • 3.代码
      • 1.map AC
      • 2.map + set AC (map已经自动排序了,没必要使用set,练习使用多个stl的做法)
    • 4.总结
    • 5.更新日志

    1.题目

    题目背景

    #警告:数据可能存在加强

    题目描述

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

    输入格式

    共 n + 1 n+1 n+1行。

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

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

    输出格式

    共 m m m行( m m m为 n n n个自然数中不相同数的个数),按照自然数从小到大的顺序输出。

    每行输出 2 2 2个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。

    样例输入 #1

    8
    2
    4
    2
    4
    5
    100
    2
    100
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    样例输出 #1

    2 3
    4 2
    5 1
    100 2
    
    • 1
    • 2
    • 3
    • 4

    提示

    40 % 40\% 40%的数据满足: 1 ≤ n ≤ 1000 1 \le n \le 1000 1≤n≤1000

    80 % 80\% 80%的数据满足: 1 ≤ n ≤ 50000 1 \le n \le 50000 1≤n≤50000

    100 % 100\% 100%的数据满足: 1 ≤ n ≤ 200000 1 \le n \le 200000 1≤n≤200000,每个数均不超过 1500000000 ( 1.5 × 1 0 9 ) 1500 000 000(1.5 \times 10^9) 1500000000(1.5×109)

    NOIP 2007 提高第一题

    2.分析

    题目给出的数据范围过大,不可能开出1.5*109 大小的数组存储每个数字并计数
    考虑使用map容器[可视为可开足够大的变长数组、实际为红黑树]

    注意:map包含自动排序!!!

    3.代码

    1.map AC

    #include 
    using namespace std;
    #include 
    map<int, int> m;
    int n;
    int main()
    {
    	int n;
    	scanf("%d", &n);
    	while (n--)
    	{
    		int x;
    		scanf("%d", &x);
    		m[x]++;
    	}
    
    	for (auto x : m)
    		printf("%d %d\n", x.first, x.second);
    	return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    在这里插入图片描述

    2.map + set AC (map已经自动排序了,没必要使用set,练习使用多个stl的做法)

    #include 
    using namespace std;
    //set + map
    #include 
    #include 
    map<int, int> mp;  //计数
    set<int> st;   //自动去重 + 排序
    int main()
    {
    	int t;
    	scanf("%d", &t);
    	while (t--)
    	{
    		int x;
    		scanf("%d", &x);
    		mp[x]++;
    		st.insert(x);
    	}
    	for (auto x : st)
    		printf("%d %d\n", x, mp[x]);
    	/*等价于下列写法
    	for (set::iterator it = st.begin(); it != st.end(); ++it)
    		printf("%d %d\n", *it, mp[*it]);*/
    	return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    在这里插入图片描述

    4.总结

    掌握必要的stl容器还是很有必要的~
    map、set容器的遍历及其它知识点,请点击链接查看

    5.更新日志

    2022.8.27 整理

    欢迎交流、讨论、指正~
    不正确、不理解之处欢迎评论留言~

  • 相关阅读:
    SpringBoot+Vue实现excel导入带格式化的时间参数(moment格式化明天日期并设置el-date-picker默认值)
    时间序列预测中的数据分析->周期性、相关性、滞后性、趋势性、离群值等特性的分析方法
    如何再kali中下载iwebsec靶场
    常用工具类之使用hutool生成验证码
    Spring Cloud项目合规性注册之-(单元集成测试报告)
    SpringBoot 3.2.5 引入Swagger(OpenApi)
    解释 Git 的基本概念和使用方式。
    焱融科技为国家重点实验室打造海量高性能存储
    IntelliJ IDEA 2022.2 正式来临:已完全支持 Spring 6 和 Spring Boot 3
    LeetCode 2322. 从树中删除边的最小分数 暴力+DFS+优化
  • 原文地址:https://blog.csdn.net/qq_60404548/article/details/126554712
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号