南沙C++信奥赛陈老师解一本通题 1943:【08NOIP普及组】排座椅

news/2024/10/22 23:49:10

 【题目描述】

上课的时候总有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情。不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的DD对同学上课时会交头接耳。同学们在教室中坐成了MM行NN列,坐在第ii行第jj列的同学的位置是(i,ji,j),为了方便同学们进出,在教室中设置了KK条横向的通道,LL条纵向的通道。于是,聪明的小雪想到了一个办法,或许可以减少上课时学生交头接耳的问题:她打算重新摆放桌椅,改变同学们桌椅间通道的位置,因为如果一条通道隔开了两个会交头接耳的同学,那么他们就不会交头接耳了。

请你帮忙给小雪编写一个程序,给出最好的通道划分方案。在该方案下,上课时交头接耳的学生的对数最少。

【输入】

第一行,有55个用空格隔开的证书,分别是M,N,K,L,D(2≤N,M≤1000,0≤K<M,0≤L<N,D≤2000)M,N,K,L,D(2≤N,M≤1000,0≤K<M,0≤L<N,D≤2000)。

接下来DD行,每行有44个用空格隔开的整数。第ii行的44个证书Xi,Yi,Pi,OiXi,Yi,Pi,Oi,表示坐在位置(Xi,YiXi,Yi)与(Pi,OiPi,Oi)的两个同学会交头接耳(输入保证他们前后相邻或者左右相邻)。

输入数据保证最优秀方案的唯一性。

【输出】

共两行。

第一行包含KK个整数,a1,a2……aka1,a2……ak,表示第a1a1行和a1+1a1+1行之间、第a2a2行和第a2+1a2+1行之间、…、第aKaK行和第aK+1aK+1行之间要开辟通道,其中ai<ai+1ai<ai+1,每两个整数之间用空格隔开(行尾没有空格)。

第二行包含LL个整数,b1b2……bLb1b2……bL,表示第b1b1列和b1+1b1+1列之间,第b2b2列和b2+1b2+1列之间、…、第bLbL列和第bL+1bL+1列之间要开辟通道,其中bi<bi+1bi<bi+1,每两个整数之间用空格隔开(行尾没有空格)。

【输入样例】

4 5 1 2 3 
4 2 4 3 
2 3 3 3 
2 5 2 4

【输出样例】

2
2 4

 

#include <bits/stdc++.h>
using namespace std;
struct Seat
{int cnt;int id;//代表行号或行号 
};
Seat row[2001],col[2001];
bool cmp(Seat a, Seat b)
{return a.cnt>b.cnt;
}
bool cmp2(Seat a, Seat b)
{return a.id<b.id;
}
int main()
{int m,n,k,l,d;cin>>m>>n>>k>>l>>d;for(int i=1;i<=d;i++){int r1,c1,r2,c2;cin>>r1>>c1>>r2>>c2;	 if(c1==c2)	//如果列相等 则需要划分行 {row[min(r1,r2)].cnt++;	//只存行号最小row[min(r1,r2)].id=min(r1,r2); //用于划分行号 }else{col[min(c1,c2)].cnt++;col[min(c1,c2)].id=min(c1,c2); }}sort(row+1,row+1+m,cmp);sort(col+1,col+1+n,cmp);sort(row+1,row+1+k,cmp2);	//要求按行号最小输出 不能全排序,否则不符合要求的ID会放到k内 sort(col+1,col+1+l,cmp2);for(int i=1;i<=k;i++)cout<<row[i].id<<" ";cout<<endl;for(int i=1;i<=l;i++)cout<<col[i].id<<" ";return 0;
}

 

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

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

相关文章

PyQt5 使用 Pyinstaller+multiprocessing 打包多进程应用时,引发的一些问题

解决 Pyinstaller 打包 PyQt5+multiprocessing 多进程应用时,引发的一些问题,包括反复启动主进程,以及:AttributeError: NoneType object has no attribute write 本文提供一些解决方案,您可能需要根据自己的实际情况,逐个尝试,直到自己的multiprocessing多进程应用正常…

2024数据采集与融合实践作业一

码云链接:gitee码云 作业①: 1)、爬取学校排名实验: o 要求:用requests和re库方法设计某个商城(自已选择)商品比价定向爬虫,爬取该商城,以关键词“书包”搜索页面的数据,爬取商品名称和价格。 o 输出信息:排名 学校名称 省市 学校类型 总分1 清华大学 北京 综合 852.5…

spring上 -基于注解配置bean,动态代理,AOP笔记

用的是jdk8,spring框架里jar包的下载可以自己搜到 注解用到的jar包。60,注解配置Bean快速入门 基本介绍 代码结构: UserDao.javapackage com.hspedu.spring.component;import org.springframework.stereotype.Repository;/* * 使用 @Repository 标识该类是一个Repository…

2024数据采集与融合技术实践第二次作业

这个作业属于哪个课程 <首页 - 2024数据采集与融合技术实践 - 福州大学 - 班级博客 - 博客园 (cnblogs.com)>这个作业要求在哪里 <作业2 - 作业 - 2024数据采集与融合技术实践 - 班级博客 - 博客园 (cnblogs.com)>学号 <102202126>一、作业内容 作业①要求:…

Proxmox VE 安装Mikrotik RouterOS

一、环境介绍 1、PVE版本:Proxmox Virtual Environment 7.2-3 2、ROS CHR镜像文件,Google Chrome 浏览器上访问Mikrotik官网下载,或访问云盘。 3、WinSCP、Xshell 用于上传镜像文件到PVE物理机。(请自行百度下载)Xshell下载地址WinSCP下载地址 二、PVE部署准备工作,上传R…

Educational Codeforces Round 170 (Rated for Div. 2) ABCD

Educational Codeforces Round 170 (Rated for Div. 2) ABCD来源:Educational Codeforces Round 170 (Rated for Div. 2) A. Two Screens 题意 给两个屏幕,两种操作,每种操作一秒,求让两个屏幕显示两个指定字符串的最短时间 操作:在一个屏幕的字符串后加任意一个字符 把一…

一个案例入门补环境

补环境其实是`补浏览器有而Node没有的环境,即补BOM和DOM的对象`,一切环境补的结果都是向浏览器实际结果靠齐,入门补环境只需要记住缺啥补啥这个技巧,当运行提示缺少某个环境,则直接在浏览器运行该环境是啥结果然后补上该结果。此分享只用于学习用途,不作商业用途,若有冒…

tcp

TCP/IP 协议与七层 ISO 模型的对应关系TCP/IP 和 ISO 的区别: OSI 参考模型注重“通信协议必要的功能是什么”,而 TCP/IP 则更强调“在计算机上实现协议应该开发哪种程序”。