1364:D. 重复成绩统计 (改编)

1364:[2017 江苏科技大学 程序设计竞赛] D. 重复成绩统计 (改编)

难度:  秩序白银     时间限制:  1000MS    空间限制:  64MB    提交数:  172    通过数:  21
题目内容

[2017 江苏科技大学 程序设计竞赛]

D. 重复成绩统计 (改编)

题目描述

上海闵行膜法学院刚刚结束了高等膜法期中考试,现在有 N ( 0 < N < 1000000) 个学生的成绩需要统计,管理教学的长者们想要知道成绩的总体分布情况,请将不同分数的成绩和人数统计好并分别输出。

输入描述

有多组测试数据,每组测试数据占若干行。

在第 1 行中,有一个数字 N。

在第 2 到第 N + 1 行中,每行一个数字,代表这是一个学生的成绩。

所有数据保证在 32 位有符号整数范围内。

输出描述

每一行的输出格式为:成绩 取得这个成绩的人数。

注意:成绩和取得这个成绩的人数中间有一个空格! 同时,输出的时候。请按成绩的大小从低到高输出

由于数据量较大,请尽量使用时间复杂度较低的排序算法。

输入样例

5

45

45

45

60

60

6

100

60

100

100

50

60

输出样例

45 3

60 2

50 1

60 2

100 3

改编者留言

这题利用 STL 中的 sort 做显然不是最快的方法,你知道怎么做更快吗? 滑稽

#include <iostream>
#include <map> 
using namespace std;
int main()
{
 	int n;
 	while (scanf("%d", &n) != EOF) {
 		int grade;
 		map <int, int> p;  //用map容器 不然会超时的喔 
 		for (int i = 1; i <= n; i++) {
 			scanf("%d", &grade);
 			p[grade]++;//对应标记加1 
		 }
		 for (const auto &q:p) { //输出 
		 	printf("%d %d\n", q.first, q.second);
		 }
	 }
	return 0;
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
优化并改编以下代码,使其和原来有部分出入但实现效果相同: 1. import socket 2. 3. 4. def client(): 5. # 创建套接字 6. sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 7. # 连接服务器 8. ip = input("Please input the receiver's ipv4 address:") 9. sock.connect((ip, 14000)) 10. # 发送文件名 11. filename = input("Please input the filename:") 12. sock.send(filename.encode()) 13. # 接收服务器返回的消息 14. data = sock.recv(1024) 15. print(data.decode()) 16. # 发送文件内容 17. with open(filename, 'rb') as f: 18. for line in f: 19. sock.send(line)20. print('File has sent successfully') 21. # 关闭套接字 22. sock.close() 23. 24. 25.def server(): 26. # 创建套接字 27. sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 28. # 绑定地址和端口号 29. 30. sock.bind(('', 14000)) 31. # 监听连接请求 32. sock.listen(5) 33. while True: 34. # 接受连接请求 35. conn, addr = sock.accept() 36. print('The connection has been established') 37. # 接收文件名 38. filename = conn.recv(1024).decode() 39. print(filename) 40. # 发送消息到客户端 41. conn.send('Got the file name'.encode()) 42. # 接收文件内容并写入文件 43. with open(filename, 'wb') as f: 44. while True: 45. data = conn.recv(1024) 46. if not data: 47. break 48. f.write(data) 49. print('File has received successfully') 50. # 关闭连接套接字 51. conn.close() 52. 53. 54.if name == 'main': 55. while True: 56. answer = input("This is a simple program relying on the Tc p protocol, \n if you want to send the file," 57. "please input 1, \n if you want to receive the file, please input 2, \n if you want exit, " 58. "please input 0: \n") 59. if answer == '0': 60. break 61. if answer == '1': 4162. client() 63. if answer == '2': 64. server()
05-24

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值