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

[NOIP2008 普及组] 排座椅

题目描述

上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情。不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳。

同学们在教室中坐成了M行N列,坐在第i行第j列的同学的位置是 (i,j),为了方便同学们进出,在教室中设置了K条横向的通道,L条纵向的通道。

于是,聪明的小雪想到了一个办法,或许可以减少上课时学生交头接耳的问题:她打算重新摆放桌椅,改变同学们桌椅间通道的位置,因为如果一条通道隔开了2个会交头接耳的同学,那么他们就不会交头接耳了。

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

输入格式

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

接下来的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 行之间要开辟通道,其中ai​<ai+1​,每两个整数之间用空格隔开(行尾没有空格)。

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

输入数据 1

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

输出数据 1

2
2 4

提示

上图中用符号*、※、+标出了3对会交头接耳的学生的位置,图中3条粗线的位置表示通道,图示的通道划分方案是唯一的最佳方案。

来源

2008 年普及组第二题

代码

#include<bits/stdc++.h>
using namespace std;
struct A{
	int n1,p1;
}k[1005],l[1005];
bool cmp(A xx,A yy){
	return xx.n1>yy.n1;
}
bool cmp1(A xxx,A yyy){
	return xxx.p1<yyy.p1;
}
int main(){
	int m,n,p,q,d,x1,y1,x2,y2;
    cin>>m>>n>>p>>q>>d;
    for(int i=1;i<=d;i++){
        cin>>x1>>y1>>x2>>y2;
        if(x1==x2){
        	l[min(y1,y2)].p1=min(y1,y2);
        	l[min(y1,y2)].n1++;
		}else{
			k[min(x1,x2)].p1=min(x1,x2);
        	k[min(x1,x2)].n1++;
		}
    }
    sort(l+1,l+n+1,cmp);
    sort(k+1,k+m+1,cmp);
    sort(l+1,l+q+1,cmp1);
    sort(k+1,k+p+1,cmp1);
    for(int i=1;i<=p;i++)cout<<k[i].p1<<' ';
    cout<<'\n';
    for(int i=1;i<=q;i++)cout<<l[i].p1<<' ';
    return 0;
}

说明

该题变量比较多,m代表行,n代表列,p是横排,q是纵排,d是对数(交头接耳的对数)x1,x2,y1,y2表示位置。

6~11行的cmp/cmp1表示结构体排序算法,在25~28行有应用。

k数组与l数组分别表示开辟过道的横排数与纵列数

结构体A表示过道隔开的同学与位置


http://www.kler.cn/a/377496.html

相关文章:

  • 使用SQLark如何将Oracle迁移到达梦数据库
  • 从零开始在本地服务器上安装OnlyOffice并进行跨地域协同编辑文件
  • PowerCat反弹Shell
  • 深度学习基础知识-损失函数
  • 你知道Mac也能拥有丰富的右键菜单栏吗?
  • 1范数和无穷范数定义、对偶关系、1范数和无穷范数是凸函数的详细证明过程
  • 【Redis:原理、架构与应用】
  • 中阳量化交易模型的探索与发展:科技引领金融未来
  • 东方娱乐周刊
  • 注册页面设计(表单基础)
  • 【机器学习】机器学习与成像技术:开启智能视觉的新篇章
  • Zypher Research:服务器抽象叙事,GameFi 赛道的下一个热点?
  • openssl-ecparam 命令手册
  • LeetCode (206单链表反转)
  • React + Vite + TypeScript + React router项目搭建教程
  • 以客户为导向在开源 AI 智能名片 2 + 1 链动模式 S2B2C 商城小程序内容创作中的实践与价值
  • 【缓存与加速技术实践】NoSQL之Redis部署安装与基础命令
  • 【LwIP源码学习4】主线程tcpip_thread
  • 1011:甲流疫情死亡率
  • 【零售和消费品&存货】价格标签检测系统源码&数据集全套:改进yolo11-RFAConv
  • 地平线 3D 目标检测 bev_sparse 参考算法-V1.0
  • TOEIC 词汇专题:饭店住宿篇
  • Docker篇(基础命令)
  • 【ChatGPT】让ChatGPT在回答中附带参考文献与来源
  • 淘宝 API 多语言接入:释放技术开发新潜力
  • 【react】基础知识点学习