天梯赛的赛场安排(Python)

作者 陈越

单位 浙江大学

rooms.jpg

天梯赛使用 OMS 监考系统,需要将参赛队员安排到系统中的虚拟赛场里,并为每个赛场分配一位监考老师。每位监考老师需要联系自己赛场内队员对应的教练们,以便发放比赛账号。为了尽可能减少教练和监考的沟通负担,我们要求赛场的安排满足以下条件:

  • 每位监考老师负责的赛场里,队员人数不得超过赛场规定容量 C;
  • 每位教练需要联系的监考人数尽可能少 —— 这里假设每所参赛学校只有一位负责联系的教练,且每个赛场的监考老师都不相同。

为此我们设计了多轮次排座算法,按照尚未安排赛场的队员人数从大到小的顺序,每一轮对当前未安排的人数最多的学校进行处理。记当前待处理的学校未安排人数为 n:

  • 如果 n≥C,则新开一个赛场,将 C 位队员安排进去。剩下的人继续按人数规模排队,等待下一轮处理;
  • 如果 n<C,则寻找剩余空位数大于等于 n 的编号最小的赛场,将队员安排进去;
  • 如果 n<C,且找不到任何非空的、剩余空位数大于等于 n 的赛场了,则新开一个赛场,将队员安排进去。

由于近年来天梯赛的参赛人数快速增长,2023年超过了 480 所学校 1.6 万人,所以我们必须写个程序来处理赛场安排问题。

输入格式:

输入第一行给出两个正整数 N 和 C,分别为参赛学校数量和每个赛场的规定容量,其中 0<N≤5000,10≤C≤50。随后 N 行,每行给出一个学校的缩写(为长度不超过 6 的非空小写英文字母串)和该校参赛人数(不超过 500 的正整数),其间以空格分隔。题目保证每所学校只有一条记录。

输出格式:

按照输入的顺序,对每一所参赛高校,在一行中输出学校缩写和该校需要联系的监考人数,其间以 1 空格分隔。
最后在一行中输出系统中应该开设多少个赛场。

输入样例:

10 30
zju 30
hdu 93
pku 39
hbu 42
sjtu 21
abdu 10
xjtu 36
nnu 15
hnu 168
hsnu 20

输出样例:

zju 1
hdu 4
pku 2
hbu 2
sjtu 1
abdu 1
xjtu 2
nnu 1
hnu 6
hsnu 1
16

思路:就是找最大,然后开一个考场,可惜超时了两个点。 

import math
n,m = map(int,input().split())
dc = dict()
arr = []
for i in range(n):s,x = input().split()x = int(x)arr.append(x)dc[s] = dc.get(s,0) + math.ceil(x/m)
li = list(dc.items())
for s,x in li:print(s,x)
count = 0 #表示需要开的赛场
sai = [] #表示开设的赛场
while len(arr) >0:i = arr.index(max(arr))if arr[i]>=m:x=math.floor(arr[i]/m)arr[i]-=m*xcount+=xif arr[i] == 0:arr.pop(i)else:if len(sai) >0:flag = 0for j in range(len(sai)):if arr[i] <= m-sai[j]:sai[j] += arr[i]arr.pop(i)flag = 1breakif flag == 0:sai.append(arr[i])arr.pop(i)count += 1else:sai.append(arr[i])arr.pop(i)count += 1
print(count)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/739185.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js中有哪些数据类型,它们有什么区别?

JavaScript共有八种数据类型&#xff0c;分别是 Undefined、Null、Boolean、Number、String、Object、Symbol、BigInt。 一、Symbol 和 BigInt 是ES6 中新增的数据类型&#xff1a; 1&#xff0c;Symbol 代表创建后独一无二且不可变的数据类型&#xff0c;它主要是为了解决可…

可视化表单流程编辑器为啥好用?

想要提升办公率、提高数据资源的利用率&#xff0c;可以采用可视化表单流程编辑器的优势特点&#xff0c;实现心中愿望。伴随着社会的进步和发展&#xff0c;提质增效的办公效果一直都是很多职场办公团队的发展需求&#xff0c;作为低代码技术平台服务商&#xff0c;流辰信息团…

【CSP试题回顾】201709-2-公共钥匙盒

CSP-201709-2-公共钥匙盒 关键点 1. 选择恰当的数据结构存储钥匙的存取操作 结构体MyKey包含三个字段&#xff1a;time、opt和index。 time字段表示操作发生的时间点。对于取钥匙的操作&#xff0c;这个时间就是老师上课的开始时间&#xff1b;对于还钥匙的操作&#xff0c…

Ollama 只安装 Ollama,本地快速部署谷歌开源大模型Gemma(基于Ollama)

参考&#xff1a;本地快速部署谷歌开源大模型Gemma(基于Ollama) - 知乎 确保系统更新: Bash sudo apt update && sudo apt upgrade 需要先下载Ollama&#xff0c;版本要求0.1.26及以上 运行curl -fsSL https://ollama.com/install.sh | sh 监听 Ollama API 接…

C++ 之LeetCode刷题记录(三十九)

&#x1f604;&#x1f60a;&#x1f606;&#x1f603;&#x1f604;&#x1f60a;&#x1f606;&#x1f603; 开始cpp刷题之旅。 目标&#xff1a;执行用时击败90%以上使用 C 的用户。 22. 括号生成 数字 n 代表生成括号的对数&#xff0c;请你设计一个函数&#xff0c;用…

2023年河北省职业院校技能大赛(高职组) “云计算”赛项任务书

2023年河北省职业院校技能大赛 “云计算”赛项任务书 第一场次&#xff1a;私有云(50分)任务一、私有云服务搭建(15分)任务二、私有云服务运维(25分)任务三、私有云运维开发(10分&#xff09; 第二场次&#xff1a;容器云任务一、容器云服务搭建任务(5分)任务二、容器云应用部署…

2024年春招助学活动:一批FPGA高端项目让你轻松拿到大厂offer

这里写目录标题 1、前言2、FPGA行业现状3、简历怎么写4、FPGA高端项目4.1 图像类&#xff1a;FPGA图像缩放多路视频拼接4.2 通信类&#xff1a;千兆网UDP协议栈4.3 通信类&#xff1a;万兆网UDP协议栈4.4 图像通信综合&#xff1a;FPGA图像缩放UDP网络视频传输4.5 图像高速接口…

零基础学习JS--基础篇--JavaScript类型化数组

JavaScript 类型化数组是一种类似数组的对象&#xff0c;并提供了一种用于在内存缓冲中访问原始二进制数据的机制。 引入类型化数组并非是为了取代 JavaScript 中数组的任何一种功能。相反&#xff0c;它为开发者提供了一个操作二进制数据的接口。这在操作与平台相关的特性时会…

Java SE String类(一):常用方法(上)

1. 常用方法 1.1 字符串构造 String类的常用构造方法只有以下三种 public class Main {public static void main(String[] args) {String s1 "hello";//使用常量串进行构造String s2 new String("hello");//创建String对象char[] array {h,e,l,l,o};…

Be Your Own Teacher 论文阅读

参考文献&#xff1a; Be Your Own Teacher 论文阅读_be your own teacher: improve the performance of co-CSDN博客 Be Your Own Teacher: Improve the Performance of Convolutional Neural Networks via Self Distillation-CSDN博客 Self Distillation 自蒸馏论文解读-C…

DeepLearning in Pytorch|我的第一个NN-共享单车预测

目录 概要 一、数据准备 导入数据 数据可视化 二、设计神经网络 版本一 版本二&#xff08;正片&#xff09; 三、测试 小结 概要 我的第一个深度学习神经网络模型---利用Pytorch设计人工神经网络对某地区租赁单车的使用情况进行预测 输入节点为1个&#xff0c;隐含…

大预言模型——ChatGPT,Claude3、Sora、等技术

原文链接&#xff1a;大预言模型——ChatGPT,Claude3、Sora、等技术https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247596849&idx3&sn111d68286f9752008bca95a5ec575bb3&chksmfa823ad6cdf5b3c0c446eceb5cf29cccc3161d746bdd9f26cc060f78c359ec3e2a8f35…

【Rust】——use关键字

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

预测建模案例-预防机器故障

预测分析是一种使用当前数据和历史数据来预测活动、行为和趋势的高级分析形式。它涉及将统计分析技术、数据查询和机器学习算法应用于数据集。预测分析还涉及创建预测模型&#xff0c;以对特定操作或事件发生的可能性设置数值或评分。 预测分析寻找数据模式并预测未来趋势&…

Java开发从入门到精通(一):Redis

目录&#xff1a; Redis介绍 Redis是单线程多路IO复用技术 Redis基础操作 Redis使用场景 Redis支持的java客户端 Memcache与Redis的区别 Mysql和Redis的区别 Redis的8种数据类型&#xff0c;以及每种数据类型的使用场景 Redis事务 1、Redis介绍 Redis是一个开源的键值存储系统。…

【Unity】二进制文件 数据持久化(修改版)【个人复习笔记/有不足之处欢迎斧正/侵删】

变量的本质都是二进制&#xff0c;在内存中都以字节的形式存储着&#xff0c;通过sizeof方法可以看到常用变量类型占用的字节空间长度&#xff08;1byte 8bit&#xff0c;1bit(位)不是0就是1&#xff09; 二进制文件读写的本质&#xff1a;将各类型变量转换为字节数组&#xf…

day1-C++

1>提示并输入一个字符串&#xff0c;统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数要求使用C风格字符串完成。 代码&#xff1a; #include <iostream> #include <string.h> using namespace std;int main() {string str ;int low 0, …

智慧公厕系统架构分析及应用探索

智慧公厕是运用物联网技术和云计算平台&#xff0c;实现对公共厕所的智能管理和优化的未来式公共厕所信息化整体解决方案。该系统由应用层、平台层、传输层和感知层组成&#xff0c;各层相互配合&#xff0c;共同构建一个高效、智能的公厕运营环境。 一、感知层&#xff1a; …

Android Kotlin知识汇总(三)Kotlin 协程

Kotlin的重要优势及特点之——结构化并发 Kotlin 协程让异步代码像阻塞代码一样易于使用。协程可大幅简化后台任务管理&#xff0c;例如网络调用、本地数据访问等任务的管理。本主题介绍如何使用 Kotlin 协程解决以下问题&#xff0c;从而让您能够编写出更清晰、更简洁的应用代…

Vue基础之Vuex状态管理

个人名片&#xff1a; &#x1f60a;作者简介&#xff1a;一名大二在校生 &#x1f921; 个人主页&#xff1a;坠入暮云间x &#x1f43c;座右铭&#xff1a; 给自己一个梦想&#xff0c;给世界一个惊喜。 &#x1f385;**学习目标: 坚持每一次的学习打卡 文章目录 什么是Vuex&…