算法题(148):排座椅

审题:
本题需要我们找到最佳的排座椅方案,并输出行,列方案

思路:
方法一:简单贪心

由于题目会告诉我们有哪几对的同学会交头接耳,所以我们可以记录下第几行/第几列上可以隔开的同学对数,而题目限制我们的行隔离只有k行,列隔离只有l行,所以我们只要输出同学对数最多的前k行与前l列即可。

注意:我们最终输出的是行号/列号,若直接使用普通数组来记录数据会导致最后无法得知原本他们的行号/列号,所以我们使用结构体来进行数据记录

解题:

(1)结构体定义

struct sit
{int index;int count;
}row[N], col[N];

index就是行号/列号,count表示同学对数,row[N]是行结构体数组,col[N]是列结构体数组

(2)数据录入

cin >> m >> n >> k >> l >> d;//初始化结构体for (int i = 1; i <= m; i++) row[i].index = i;for (int i = 1; i <= n; i++) col[i].index = i;//记录数据for (int i = 1; i <= d; i++){int x, y, p, q;cin >> x >> y >> p >> q;if (x == p)//同一行{col[min(y, q)].count++;}else//同一列{row[min(x, p)].count++;}}

我们先对行和列的数组进行索引的初始化,然后将可以隔离的同学对数记录进对应的行/列中。

若x==p,同学在同一行,此时我们需要用列来隔离,所以对min(y,q)的列count++

若y==q,同学在同一列,此时我们需要用行来隔离,所以对min(x,q)的行count++

(3)排序

	bool count_sort(sit& s1,sit& s2)
{return s1.count > s2.count;
}
bool index_sort(sit& s1, sit& s2)
{return s1.index < s2.index;
}//以count进行排序sort(row + 1, row + 1 + m, count_sort);sort(col + 1, col + 1 + n, count_sort);//对前k个多对的根据index进行排序sort(row + 1, row + 1 + k, index_sort);//对前l个多对的根据index进行排序sort(col + 1, col + 1 + l, index_sort);

我们先根据count进行排序,count大的就排前面。

然后由于最后输出的时候要按照行号/列号小的排前面输出,所以我们再对排序后的前k行的行号进行排序,列也是同理。

(4)输出数据

//输出数据for (int i = 1; i <= k; i++){cout << row[i].index << " ";}cout << endl;for (int i = 1; i <= l; i++){cout << col[i].index << " ";}cout << endl;

P1056 [NOIP 2008 普及组] 排座椅 - 洛谷

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

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

相关文章

企业级电商数据对接:1688 商品详情 API 接口开发与优化实践

在数字化浪潮席卷全球的当下&#xff0c;企业级电商平台之间的数据对接已成为提升运营效率、增强市场竞争力的关键环节。作为国内知名的 B2B 电商平台&#xff0c;1688 拥有海量商品资源&#xff0c;通过开发和优化商品详情 API 接口&#xff0c;企业能够快速获取商品信息&…

【Cesium入门教程】第七课:Primitive图元

Cesium丰富的空间数据可视化API分为两部分&#xff1a;primitive API面向三维图形开发者&#xff0c;更底层一些。 Entity API是数据驱动更高级一些。 // entity // 调用方便&#xff0c;封装完美 // 是基于primitive的封装// primitive // 更接近底层 // 可以绘制高级图形 /…

Oracle APEX 必须输入项目标签型号显示位置

1. 正常Oracle APEX中必须输入项目标签的红星显示在标签文字左侧&#xff0c;偏偏项目要求显示在右侧&#xff0c; 加入如下全局CSS代码 .t-Form-label {display: flex;flex-direction: row-reverse;gap: 1px; }以上。

深入理解 TypeScript 中的 unknown 类型:安全处理未知数据的最佳实践

在 TypeScript 的类型体系中&#xff0c;unknown 是一个极具特色的类型。它与 any 看似相似&#xff0c;却在安全性上有着本质差异。本文将从设计理念、核心特性、使用场景及最佳实践等方面深入剖析 unknown&#xff0c;帮助开发者在处理动态数据时既能保持灵活性&#xff0c;又…

项目QT+ffmpeg+rtsp(二)——海康威视相机测试

文章目录 前言一、验证RTSP地址的有效性1.1 使用VLC播放器验证1.2 使用FFmpeg命令行验证1.3 使用Python代码检查网络连接1.4 检查摄像头Web界面1.5 使用RTSP客户端工具二、关于IPV4的地址2.1 原来2.1.1 原因2.2 解决2.3 显示前言 昨晚拿到一个海康威视的相机,是连接上了交换机…

Java-Collections类高效应用的全面指南

Java-Collections类高效应用的全面指南 前言一、Collections 类概述二、Collections 类的基础方法2.1 排序操作2.1.1 sort方法2.1.2 reverse方法2.1.3 shuffle方法 2.2 查找与替换操作2.2.1 binarySearch方法2.2.2 max和min方法2.2.3 replaceAll方法 三、Collections 类的高级应…

中国30米年度土地覆盖数据集及其动态变化(1985-2022年)

中文名称 中国30米年度土地覆盖数据集及其动态变化(1985-2022年) 英文名称&#xff1a;The 30 m annual land cover datasets and its dynamics in China from 1985 to 2022 CSTR:11738.11.NCDC.ZENODO.DB3943.2023 DOI 10.5281/zenodo.8176941 数据共享方式&#xff1a…

Python高版本降低低版本导致python导包异常的问题

当Python从高版本降级到低版本后出现导包异常&#xff0c;通常是由于以下原因导致的&#xff1a;高版本中安装的包与低版本不兼容、包路径或依赖冲突、虚拟环境未正确配置等。以下是具体的解决方案和步骤&#xff1a; 1. 确认问题原因 检查Python版本&#xff1a;确保当前使用…

AGI大模型(20):混合检索之rank_bm25库来实现词法搜索

1 混合检索简介 混合搜索结合了两种检索信息的方法 词法搜索 (BM25) :这种传统方法根据精确的关键字匹配来检索文档。例如,如果您搜索“cat on the mat”,它将找到包含这些确切单词的文档。 基于嵌入的搜索(密集检索) :这种较新的方法通过比较文档的语义来检索文档。查…

掌握 Kotlin Android 单元测试:MockK 框架深度实践指南

掌握 Kotlin Android 单元测试&#xff1a;MockK 框架深度实践指南 在 Android 开发中&#xff0c;单元测试是保障代码质量的核心手段。但面对复杂的依赖关系和 Kotlin 语言特性&#xff0c;传统 Mock 框架常显得力不从心。本文将带你深入 MockK —— 一款专为 Kotlin 设计的 …

常见平方数和立方数的计算

平方数&#xff08;n&#xff09; 数字计算过程结果1010 101001111 111211212 121441313 131691414 141961515 152251616 162561717 172891818 183241919 193612020 20400 立方数&#xff08;n&#xff09; 数字计算过程结果1010 10 101,0001111 11 111,33112…

自动化测试实战 - 博客系统自动化测试

目录 1. 前言 2. 自动化实施步骤 3. 页面分析 4. 设计测试用例 5. 搭建自动化环境 6. 编写自动化代码 6.1 准备工作 - Utils 6.1.1 允许远程自动化 & 创建驱动 6.1.2 实现自动化截图 6.1.3 释放 WebDriver 6.2 自动化测试登录页 - LoginTest 6.2.1 打开登陆页 …

网络实验-VRRP

VRRP协议简述 VRRP(虚拟路由冗余协议)通过虚拟IP地址&#xff08;VIP&#xff0c;virtual ip&#xff09;来实现冗余。在正常情况下&#xff0c;Master路由器会响应VIP的ARP请求&#xff0c;并处理所有发往VIP的流量。Backup路由器则处于待命状态&#xff0c;只有在Master路由…

计算机发展的历程

计算机系统的概述 一, 计算机系统的定义 计算机系统的概念 计算机系统 硬件 软件 硬件的概念 计算机的实体, 如主机, 外设等 计算机系统的物理基础 决定了计算机系统的天花板瓶颈 软件的概念 由具有各类特殊功能的程序组成 决定了把硬件的性能发挥到什么程度 软件的分类…

JavaScript splice() 方法

1. JavaScript splice() 方法 1.1. 定义和用法 splice() 方法用于添加或删除数组中的元素。   注意&#xff1a;这种方法会改变原始数组。   返回值&#xff1a;如果删除一个元素&#xff0c;则返回一个元素的数组。 如果未删除任何元素&#xff0c;则返回空数组。 1.2. …

磁盘I/O子系统

一、数据写入磁盘流程 当执行向磁盘写入数据操作的时候&#xff0c;会发生如下的一系列基本操作。假设文件数据存在于磁盘扇区上&#xff0c;并且已经被读入到页缓存中。 进程使用write()系统调用写入文件。内核更新映射到文件的page cache。内核线程pdflush负责把页缓存刷入…

单调栈和单调队列

一、单调栈 1、使用场景 解决元素左 / 右侧第一个比他大 / 小的数字。 2、原理解释 用栈解决&#xff0c;目标是栈顶存储答案。 以元素左侧第一个比他小为例&#xff1a; &#xff08;1&#xff09;遍历顺序一定是从左向右。 &#xff08;2&#xff09;由于栈顶一定是答…

查看电脑信息的方法-CPU核心数量、线程数量等

1、查看CPU基本信息 step 1: windows下 “winr” 进入CMD step 2: 查看核心数&#xff1a;wmic cpu get NumberofCores 查看线程数&#xff1a;wmic cpu get NumberOfLogicalProcessors 查看CPU名称&#xff1a;wmic cpu get Name 查看CPU时钟频率&#xff1a;wmic cpu get Ma…

令牌桶和漏桶算法使用场景解析

文章目录 什么时候用令牌桶&#xff0c;什么时候用漏桶算法&#xff1f;&#xff1f;先放结论 两个算法一眼看懂什么时候选令牌桶&#xff1f;什么时候选漏桶&#xff1f;组合用法&#xff08;90% 的真实系统都会这么干&#xff09;小结记忆 对令牌桶和漏桶组合用法再次详细叙述…

uniapp|实现获取手机摄像头权限,调用相机拍照实现人脸识别相似度对比,拍照保存至相册,多端兼容(APP/微信小程序)

基于uniapp以及微信小程序实现移动端人脸识别相似度对比,实现摄像头、相册权限获取、相机模块交互、第三方识别集成等功能,附完整代码。 目录 核心功能实现流程摄像头与相册权限申请权限拒绝后的引导策略摄像头调用拍照事件处理人脸识别集成图片预处理(Base64编码/压缩)调用…