当前位置: 首页 > news >正文

蓝桥杯备考:贪心算法之排座位

这道题横着放和竖着放之间是不会产生影响的

我们先说一下算法原理:我们先把所有行能阻止交头接耳的学生数量计算出来,再把每列的计算出来,然后再排一下序,按编号输出最大的几个,但是如果我们用数组存这些数据的话,排完序之后编号就乱了,所以我们选择结构体存储

我们输入的同学的坐标,如果横坐标相同的时候,就说明他们是横着呆着的,我们要在纵列放一个通道,如果纵坐标相同的时候,我们要横着放通道

#include <iostream>
#include <algorithm>
const int N = 1010;
using namespace std;


struct node
{
	int id;
	int cnt;
}col[N], row[N];
int n, m, k, l, d;

bool cmp1(const node& x1, const node& x2)
{
	return x1.cnt > x2.cnt;
}
bool cmp2(const node& x1, const node& x2)
{
	return x1.id < x2.id;
}
int main()
{
	cin >> m >> n >> k >> l >> d;
	for (int i = 1; i <= m; i++) row[i].id = i;
	for (int j = 1; j <= n; j++) col[j].id = j;

	while (d--) {

		int x1, y1, x2, y2; cin >> x1 >> y1 >> x2 >> y2;
		if (x1 == x2) col[min(y1, y2)].cnt++;
		else row[min(x1, x2)].cnt++;
	}
	sort(col + 1, col + n + 1, cmp1);
	sort(row + 1, row + m + 1, cmp1);

	sort(col + 1, col + l + 1, cmp2);
	sort(row + 1, row + k + 1, cmp2);
	for (int i = 1; i <= k; i++)
	{
		cout << row[i].id << " ";
	}
	cout << endl;
	for (int j = 1; j <= l; j++)
	{
		cout << col[j].id << " ";
	}
	cout << endl;


	return 0;
}

http://www.dtcms.com/a/25970.html

相关文章:

  • 字符设备驱动
  • 2024华为OD机试真题-第k个排列(C++/Java/Python)-E卷-100分
  • Mac OS JAVA_HOME设置
  • 【数据分析】2.数据分析业务全流程
  • LLM 推理中推理-时间计算技巧
  • debian 12 安装 NVIDIA 390驱动记录
  • 6.3 DBMS的功能和特征
  • 网络安全治理模型
  • 自由学习记录(36)
  • C#的序列化[Serializable()]
  • [AI]docker封装包含cuda cudnn的paddlepaddle PaddleOCR
  • OkHttp使用和源码分析学习(一)
  • 【设计模式】【创建型模式】原型模式(Prototype)
  • 免费搭建个人网站
  • Java 比较器:Comparable vs. Comparator
  • XTOP3D的DIC技术在极端条件下的应用解决方案
  • Pyecharts系列课程07——饼图(Pie)
  • 【AI实践】阿里百炼文本对话Agent安卓版搭建
  • SpringBoot速成概括
  • Dfs分布式文件存储
  • 如何在Windows下使用Ollama本地部署DeepSeek R1
  • 所有文件转markdown文件
  • hot100-3、438、560、239、240、160、234(2简3中1难)
  • Goutte库的使用方法详解
  • 基于VirtualBox虚拟机部署完全分布式Hadoop环境
  • 影视大数据分析新范式:亮数据动态代理驱动的实时数据采集方案
  • MMLU论文简介
  • 深度学习(CNN\TensorFlow)在遥感影像分析中的应用(矿产勘探、精准农业、城市规划、林业测量、军事目标识别和灾害评估等)
  • 测试类型术语,使用指标,计算方式,使用场景总结
  • Apache Struts RCE (CVE-2024-53677)