L2-2 天梯赛的赛场安排

作者 陈越

单位 浙江大学

天梯赛使用 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
#include<bits/stdc++.h>
using namespace std;
priority_queue<int>Q;
vector<int>KC;
int N, M, K, C, ans;
string name;
int main()
{
    cin >> N >> C;
    for (int i = 1; i <= N; i++)
    {
        cin >> name >> M;
        cout << name << " " << M / C + (M % C != 0) << endl;
        Q.push(M);
    }
    while (!Q.empty())
    {
        int num = Q.top();
        if (num >= C)
        {
            num -= C;
            if (num)Q.push(num);
            ans++;
        }
        else
        {
            int i = 0;
            for (;i < KC.size(); i++)
            {
                if (KC[i] + num <= C)
                {
                    KC[i] += num;
                    break;
                }
            }
            if (i == KC.size())
            {
                KC.emplace_back(num);
                ans++;
            }
        }
        Q.pop();
    }
    cout << ans << endl;
    return 0;
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

持续集成——接口测试集成实战

文章目录 一、接口测试持续集成的好处二、环境准备三、Jenkins节点挂载1、新建node节点2、编辑节点信息 四、节点环境的配置1、Python3环境2、allure-commandline工具3、allure插件 五、本地运行待测代码1、Pycharm拉取代码执行2、命令行运行代码&#xff0c;并生成报告 六、库…

太阳能电池测试解决方案NS-9001

前言 太阳能行业的快速发展提高了对太阳能电池测试和精确测量解决方案要求&#xff0c;伴随着太阳能电池尺寸大小质量的提升&#xff0c;充电电池测试必须更多的电流和更高输出功率水准&#xff0c;这就更加需要灵活多变的测试方案支持。 现阶段&#xff0c;太阳能电池测试 解…

可以一学的代码优化小技巧:减少if-else冗余

前言 if-else 语句对于程序员来说&#xff0c;是非常非常熟悉的一个判断语句&#xff0c;我们在日常开发和学习中都经常看见它&#xff0c;if-else语句主要用于需要做出选择的地方进行判断&#xff0c;这里就不再赘述if-else语法和特点了。 ​ 我们在写代码&#xff08;如图下…

Vue3通透教程【十】跨级组件通讯—依赖注入

文章目录 &#x1f31f; 写在前面&#x1f31f; provide函数&#x1f31f; inject 函数&#x1f31f; 跨组件通讯&#x1f31f; 写在最后 &#x1f31f; 写在前面 专栏介绍&#xff1a; 凉哥作为 Vue 的忠实 粉丝输出过大量的 Vue 文章&#xff0c;应粉丝要求开始更新 Vue3 的…

震惊!为了4680锂电池溯源,竟然做出这种事情

电池溯源&#xff0c;一直都是国家尤为重视的话题。 中国电子技术标准化研究院更是一再强调了&#xff1a;锂电编码标准编制和溯源平台初步建设方案。参会代表围绕锂电编码溯源体系建设有关问题开展了研讨&#xff0c;表示依托行业通用编码标准&#xff0c;建立完善的锂电全生…

C++面向对象丨1. 内存分区模型

Author&#xff1a;AXYZdong 硕士在读 工科男 有一点思考&#xff0c;有一点想法&#xff0c;有一点理性&#xff01; 定个小小目标&#xff0c;努力成为习惯&#xff01;在最美的年华遇见更好的自己&#xff01; CSDNAXYZdong&#xff0c;CSDN首发&#xff0c;AXYZdong原创 唯…

[计算机图形学]光线追踪的基本原理(前瞻预习/复习回顾)

一、光栅化的弊端 我们为什么要用光线追踪呢&#xff0c;在之前的篇章中&#xff0c;我们提到了&#xff0c;光栅化的方式很难表示一些全局的效果&#xff0c;如(1)软阴影&#xff0c;(2)Glossy的反射(类似镜子但又不像镜子那么光滑的材质&#xff0c;如打磨的铜镜和一些金属)&…

zabbix配置钉钉机器人告警

1.在钉钉上创建一个钉钉群组 2.在群组中添加一个机器人 3.配置zabbix server调用钉钉接口的代码(使用python) 查看是否有python环境 python --version 找到zabbix 的AlertScriptsPath目录路径 cat /etc/zabbix/zabbix_server.conf|grep AlertScriptsPath 将调用钉钉接口的py…

Java——二叉搜索树的后序遍历序列

题目链接 牛客在线oj题——二叉搜索树的后序遍历序列 题目描述 输入一个整数数组&#xff0c;判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回 true ,否则返回 false 。假设输入的数组的任意两个数字都互不相同。 数据范围&#xff1a; 节点数量 0≤n≤1000 …

无人机各个类型介绍

为了执行&#xff0c;无人机可能由类似的元件制成&#xff0c;但无论是它们的能力&#xff0c;还是由什么组成的&#xff0c;它们都在某种程度上有所不同。大多数无人机都是为了执行特定任务而制造的&#xff0c;因此以特定的方式建造&#xff0c;以适应它们将要使用的环境。 …

如何实现24小时客户服务

许多企业都有着这样的愿望&#xff1a;在不增加客服人员的同时能实现24小时客户服务。 那么有没有什么方法可以实现这一想法呢&#xff1f;在想解决方案之前我们可以先来谈谈客服的作用。 客服的作用主要为以下2点&#xff1a; 帮助用户更快地了解产品&#xff08;减轻产品的…

OpenAI最新官方ChatGPT聊天插件接口《插件身份验证》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(三)(附源码)

Plugin authentication 插件身份验证 前言Plugin authentication 插件身份验证No authentication 无认证Service level 服务级别User level 用户级别OAuth其它资料下载 前言 “如果你不能信任插件&#xff0c;那么你就不能信任整个应用程序。”正因为如此&#xff0c;ChatGPT始…

第 三 章 UML 类图

文章目录 前言一、依赖关系&#xff08;虚线箭头&#xff09;二、泛化关系&#xff1a;继承&#xff08;实线空心箭头&#xff09;三、实现关系&#xff08;虚线空心箭头&#xff09;四、关联关系&#xff08;一对一为实线箭头&#xff0c;一对多为实线&#xff09;五、聚合关系…

KeePass搭建一个私人密码库

本文转载于我的博客KeePass搭建一个私人密码库 前言 {% note info no-icon %} 既然有人想看那我就不咕了嘻嘻 {% endnote %} 不知道在哪部电影里看到过这样一句话&#xff1a;根据社会工程学&#xff0c;正常人人脑是不会记住超过3种以上完全不同的复杂密码 所以你只要泄露一个…

Blender插件Lazy Viewport

目录 1.Lazy Viewport插件1.1 解压Lazy Viewport插件1.2 blender偏好设置1.3 打开插件1.4 安装插件1.5 勾选插件Lazy Viewport1.6 安装插件前1.7 安装插件后 1.Lazy Viewport插件 Blender 的一个简单插件&#xff0c;用于将标准 G、R、S 热键映射到视图工具&#xff0c;因此您…

一起学 WebGL:三角形加上渐变色

大家好&#xff0c;我是前端西瓜哥。之前教大家绘制一个红色的三角形&#xff0c;这次我们来画个有渐变的三角形。 本文为系列文章&#xff0c;请先阅读如何绘制红色三角形的文章&#xff1a; 《一起学 WebGL&#xff1a;绘制三角形》 原来的写法&#xff0c;颜色是在片元着色器…

分布式数据库架构路线大揭秘

文章目录 分布式数据库是如何演进的&#xff1f;数据库与分布式中间件有什么区别&#xff1f;如何处理分布式事务&#xff0c;提供外部一致性&#xff1f;如何处理分布式SQL&#xff1f;如何实现分布式一致性&#xff1f; 数据库更适合金融政企的未来 这些年大家都在谈分布式数…

成功上岸字节35K,技术4面+HR面,耗时20天,真是不容易

这次字节的面试&#xff0c;给我的感触很深&#xff0c;意识到基础的重要性。一共经历了五轮面试&#xff1a;技术4面&#xff0b;HR面。 下面看正文 本人自动专业毕业&#xff0c;压抑了五个多月&#xff0c;终于鼓起勇气&#xff0c;去字节面试&#xff0c;下面是我的面试过…

不知道今天吃什么?今天吃什么 API 告诉你

引言 在现代社会&#xff0c;由于生活节奏加快和繁忙的工作日程&#xff0c;越来越多的人感到选择今天吃什么餐点是一项繁琐且令人困扰的任务。为了解决这个问题&#xff0c;许多人会求助于在线菜谱和美食博客等渠道&#xff0c;但是这些选项通常是繁琐和耗时的。 幸运的是&a…

相参积累

原理 在探测远距离目标时&#xff0c;由于目标回波信号比较微弱&#xff0c;信号幅度很小&#xff0c;从而导致接收信号的信噪比&#xff08;SNR&#xff09;过低&#xff0c;以至于信号处理算法检测不到目标&#xff0c;从而发生漏检。 在脉冲体制雷达中&#xff0c;雷达系统…