洛谷 P1056 [NOIP2008 普及组 T2]:排座椅 ← 贪心算法

【题目来源】
https://www.luogu.com.cn/problem/P1056
https://www.acwing.com/problem/content/436/

【题目描述】
上课的时候总有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情。
不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的
D 对同学上课时会交头接耳。
同学们在教室中坐成了 M 行 N 列,坐在第 i 行第 j 列的同学的位置是 (i,j),为了方便同学们进出,在教室中设置了 K 条横向的通道L 条纵向的通道
于是,聪明的小雪想到了一个办法,或许可以减少上课时学生交头接耳的问题:
她打算重新摆放桌椅,
改变同学们桌椅间通道的位置,因为如果一条通道隔开了两个会交头接耳的同学,那么他们就不会交头接耳了。
请你帮忙给小雪编写一个程序,给出最好的通道划分方案。
在该方案下,上课时交头接耳的学生对数最少。

【输入格式】
输入文件的第一行,有 5 个用空格隔开的整数,分别是 M,N,K,L,D。 
接下来 D 行,每行有 4 个用空格隔开的整数,第 i 行的 4 个整数 Xi,Yi,Pi,Qi,表示
坐在位置 (Xi,Yi) 与 (Pi,Qi) 的两个同学会交头接耳(输入保证他们前后相邻或者左右相邻)。 
输入数据保证最优方案的唯一性。

【输出格式】
输出文件共两行。 
第一行包含 K 个整数,a1,a2,…,aK,表示第 a1 行和 a1+1 行之间、第 a2 行和第 a2+1 行之间、…、第 aK 行和第 aK+1 行之间要开辟通道,其中 a_i<a_{i+1},每两个整数之间用空格隔开(行尾没有空格)。 
第二行包含 L 个整数,b1,b2,…,bL,表示第 b1 列和 b1+1 列之间、第 b2 列和第 b2+1 列之间、…、第 bL 列和第 bL+1 列之间要开辟通道,其中 b_i<b_{i+1},每两个整数之间用空格隔开(行尾没有空格)。

【数据范围】
2≤N,M≤1000,
0≤K<M,
0≤L<N,
D≤2000

【输入样例】
4 5 1 2 3
4 2 4 3
2 3 3 3
2 5 2 4

【输出样例】
2
2 4

【算法分析】
● 本题在编码时,定义了一个
名为 y1全局变量。运行时,出现了如下意想不到的报错。

error: 'int y1' redeclared as different kind of entity

从错误描述可以看出,是出现了变量重复定义的错误。但是,在仔细研读了代码后,并没有发现重复定义的变量。查阅资料发现,错误原因是全局变量 y1 与 cmath 库中的 y1 产生了冲突。(大为震惊,全局变量 y1 竟然还会和 cmath 标准库中的变量产生冲突 ……)。
资料显示,
j0j1jny0y1yn 等全局变量都会和 cmath 标准库中相应变量产生冲突。

● 解决方法为“
将 y1 设为局部变量”。

【算法代码】

#include <bits/stdc++.h>
using namespace std;const int maxn=1005;
struct Room {int num,road;
} h[maxn],v[maxn]; //Horizontal and Verticalbool up(Room x,Room y) {return x.road<y.road;
}bool down(Room x,Room y) {return x.num>y.num;
}int M,N,K,L,D;
int main() {cin>>M>>N>>K>>L>>D;int x1,x2,y1,y2;for(int i=1; i<=D; i++) {cin>>x1>>y1>>x2>>y2;if(x1==x2) {v[min(y1,y2)].road=min(y1,y2);v[min(y1,y2)].num++;} else {h[min(x1,x2)].road=min(x1,x2);h[min(x1,x2)].num++;}}sort(h+1,h+1+N,down);sort(v+1,v+1+M,down);sort(h+1,h+1+K,up);sort(v+1,v+1+L,up);for(int i=1; i<=K; i++) cout<<h[i].road<<" ";cout<<endl;for(int i=1; i<=L; i++) cout<<v[i].road<<" ";return 0;
}/*
in:
4 5 1 2 3
4 2 4 3
2 3 3 3
2 5 2 4out:
2
2 4
*/





【参考文献】
https://www.luogu.com.cn/problem/solution/P1056
https://www.acwing.com/solution/content/4523/
https://www.cnblogs.com/LeafLove/p/13433559.html

 

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

十、Java集合 ★ ✔(模块18-20)【泛型、通配符、List、Set、TreeSet、自然排序和比较器排序、Collections、可变参数、Map】

day05 泛型,数据结构,List,Set 今日目标 泛型使用 数据结构 List Set 1 泛型 1.1 泛型的介绍 ★ 泛型是一种类型参数&#xff0c;专门用来保存类型用的 最早接触泛型是在ArrayList&#xff0c;这个E就是所谓的泛型了。使用ArrayList时&#xff0c;只要给E指定某一个类型…

springboot的全局异常处理

主要有两个异常注解&#xff0c;RestControllerAdvice和 ExceptionHandler(Exception.class) 案例 package com.lwy.exception;import com.lwy.pojo.Result; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotati…

C语言之大小端理解

目录 1前言2 大小端理解与区分3 大小端的识别和基本切换操作4 总结 1前言 在汽车CAN通讯报文中往往会接触到Intel类型和motorola类型&#xff0c;实际项目中涉及到多机通讯也会接触到大小端问题 2 大小端理解与区分 大端(Big_Endian) :低字节放在高地址小端(Little_Endian):…

新华三H3CNE网络工程师认证—VLAN使用场景与原理

通过华三的技术原理与VLAN配置来学习&#xff0c;首先介绍VLAN&#xff0c;然后介绍VLAN的基本原理&#xff0c;最后介绍VLAN的基本配置。 一、传统以太网问题 在传统网络中&#xff0c;交换机的数量足够多就会出现问题&#xff0c;广播域变得很大&#xff0c;分割广播域需要…

ios安装建立关系:Xinstall如何化繁为简

在移动应用日益丰富的今天&#xff0c;iOS设备上的App安装与更新成为了用户日常操作的一部分。然而&#xff0c;对于开发者而言&#xff0c;如何在iOS平台上顺利建立安装关系&#xff0c;确保应用的顺利推广与用户的持续使用&#xff0c;却是一个不容忽视的难题。今天&#xff…

Large Language Model系列之二:Transformers和预训练语言模型

Large Language Model系列之二&#xff1a;Transformers和预训练语言模型 1 Transformer模型 Transformer模型是一种基于自注意力机制的深度学习模型&#xff0c;它最初由Vaswani等人在2017年的论文《Attention Is All You Need》中提出&#xff0c;主要用于机器翻译任务。随…

誉海康运携手绿葆取袋机,暖心陪诊,守护您的就医之路

在繁忙的都市生活中&#xff0c;我们时常为了梦想和事业奔波&#xff0c;却往往忽略了身边最亲近的人——父母的健康。当父母因身体不适需要就医时&#xff0c;面对陌生的医院环境和繁琐的就诊流程&#xff0c;他们可能感到迷茫和无助。 这时&#xff0c;一份及时、贴心的陪诊…

石头剪刀布休息(猜拳游戏)

自己写的简易版 //2024.07.17 import java.util.Scanner; import java.util.Random; public class GuessingGame {public static void main(String[] args) {Tom tm new Tom();System.out.println("");for (int i 0; i < 3; i) {Random r new Random();tm.com…

STM32智能交通监测系统教程

目录 引言环境准备智能交通监测系统基础代码实现&#xff1a;实现智能交通监测系统 4.1 数据采集模块 4.2 数据处理与控制模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;交通监测与管理问题解决方案与优化收尾与总结 1. 引言 智能交通监测系统通…

YOLOv10改进 | 检测头 | 融合渐进特征金字塔的检测头【AFPN4】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效…

求解答word图标变白

把WPS卸载了之后就变成白色了&#xff0c;然后在注册表中把word的地址改成office word的地址之后图标变成这样了&#xff0c;怎么办

[米联客-安路飞龙DR1-FPSOC] FPGA基础篇连载-17 I2C通信协议原理

软件版本&#xff1a;Anlogic -TD5.9.1-DR1_ES1.1 操作系统&#xff1a;WIN10 64bit 硬件平台&#xff1a;适用安路(Anlogic)FPGA 实验平台&#xff1a;米联客-MLK-L1-CZ06-DR1M90G开发板 板卡获取平台&#xff1a;https://milianke.tmall.com/ 登录“米联客”FPGA社区 ht…

【文心智能体】前几天百度热搜有一条非常有趣的话题《00后疯感工牌》,看看如何通过低代码工作流方式实现图片显示

00后疯感工牌体验&#xff1a;https://mbd.baidu.com/ma/s/6yA90qtM 目录 前言比赛推荐工作流创建工作流入口创建工作流界面工作流界面HTTP工具卡点地方 总结推荐文章 前言 前几天百度热搜有一条非常有有趣《00后疯感工牌》。 想着通过文心智能体去一键生成00后疯感工牌是不是…

2G内存的Linux云服务器到手却只有1.7G左右?找回消失的内存

使用命令 dmesg | grep -i memory 查看内核预留内存&#xff1a; [rootiZuf6hwfrhirwu85zqpl5kZ ~]# dmesg | grep -i memory [ 0.000000] Base memory trampoline at [ffff940980099000] 99000 size 24576 [ 0.000000] Reserving 161MB of memory at 688MB for crashkernel (…

MySQL 和 PostgreSQL,我到底选择哪个?

MySQL 和 PostgreSQL 是两个广泛使用的关系型数据库管理系统&#xff08;RDBMS&#xff09;。它们都具有强大的功能和广泛的社区支持&#xff0c;但在某些方面存在一些差异。本文将详细比较 MySQL 和 PostgreSQL&#xff0c;包括它们的特点、性能、扩展性、安全性以及适用场景等…

顺序表的应用——通讯录

通讯录的实现分为五个文件分别进行编写&#xff0c;分别为&#xff1a;SeqList.c&#xff0c;SeqList.h&#xff0c;Contact.c&#xff0c;Contact.h&#xff0c;test.c 其中前两个文件为上一篇博客中的顺序表的操作&#xff0c;后三个文件为通讯录功能的实现。 SeqList.h #d…

深度学习驱动智能超材料设计与应用

在深度学习与超材料融合的背景下&#xff0c;不仅提高了设计的效率和质量&#xff0c;还为实现定制化和精准化的治疗提供了可能&#xff0c;展现了在材料科学领域的巨大潜力。深度学习可以帮助实现超材料结构参数的优化、电磁响应的预测、拓扑结构的自动设计、相位的预测及结构…

自学鸿蒙HarmonyOS的ArkTS语言<十>@BuilderParam装饰器

作用&#xff1a;当子组件多处使用时&#xff0c;给某处的子组件添加特定功能 一、初始化 1、只能被Builder装饰的方法初始化 2、使用所属自定义组件的builder方法初始化 3、使用父组件的builder方法初始化 - 把父组件的builder传过去&#xff0c;参数名和子组件的builderPar…

SpringCloud教程 | 第十篇: 读取Nacos的配置

1、nacos服务器选用 2、test.yaml这一个DataId配置如下&#xff1a; config:name: aabb222 spring:application:name: testdatasource:type: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/hmblogs?useUni…

JuiceFS缓存特性

缓存 对于一个由对象存储和数据库组合驱动的文件系统&#xff0c;缓存是本地客户端与远端服务之间高效交互的重要纽带。读写的数据可以提前或者异步载入缓存&#xff0c;再由客户端在后台与远端服务交互执行异步上传或预取数据。相比直接与远端服务交互&#xff0c;采用缓存技…