问题 B: 排座椅(seat.cpp)

时间限制: 1 Sec  内存限制: 64 MB

题目描述

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

输入

seat.in 第一行,有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)的两个同学会交头接耳(输入保证他们前后相邻或者左右相邻)。

输出

seat.out 共两行。 第一行包含K个整数,a1a2……aK,表示第a1行和a1+1行之间、第a2行和第a2+1行之间、…、第aK行和第aK+1行之间要开辟通道,其中ai<ai+1,每两个整数之间用空格隔开(行尾没有空格)。 第二行包含L个整数,b1b2……bk,表示第b1列和b1+1列之间、第b2列和第b2+1列之间、…、第bL列和第bL+1列之间要开辟通道,其中bi<bi+1,每两个整数之间用空格隔开(行尾没有空格)。

样例输入

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

样例输出

2
2 4

提示

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

#------------------------------------------------------------------------------#

这个题,看上去很像图论,事实上是贪心……

大体思路:

输入xi,yi,pi,qi,只要xi和pi相等,就表示两个学生在同一排,则L[yi和qi中小的一个]++

如果yi和qi相等,就表示两个学生在同一列,则K[xi和pi中小的一个]++,千万不要弄反了。

为什么要小的一个++呢?

仔细观察一下图(题目也有说)就知道了,输出的是ai与ai+1,如果存大的一个,通道就有问题了。

存的时候用结构体更方便,里面还需有一个a变量,存安放的位置,初始化a[i]均为i。

然后就是按K和L从大到小排序,注意还要再排一次a,因为题目说需从小到大输出!

然后直接输出即可。

代码:

#include<cstdio>
#include<algorithm>
using namespace std;
int m,n,k,l,d;
struct node
{int a,n;
}x[1002],y[1002];//结构体
bool _c(node x,node y)
{return x.n>y.n;//按n
}//sort从大到小
bool c_(node x,node y)
{return x.a<y.a;//按a
}//sort从小到大
int main()
{scanf("%d%d%d%d%d",&m,&n,&k,&l,&d);for(int i=1;i<=max(m,n);i++)x[i].a=y[i].a=i;//初始化for(int i=1;i<=d;i++){int _x,_y,_p,_q;scanf("%d%d%d%d",&_x,&_y,&_p,&_q);if(_y==_q) x[min(_x,_p)].n++;//在同一列if(_x==_p) y[min(_y,_q)].n++;//在同一行}sort(x+1,x+n+1,_c); sort(y+1,y+n+1,_c); sort(x+1,x+k+1,c_); sort(y+1,y+l+1,c_);//四次排序printf("%d",x[1].a);for(int i=2;i<=k;i++)printf(" %d",x[i].a);//输出printf("\n%d",y[1].a);for(int i=2;i<=l;i++)printf(" %d",y[i].a);//一定要处理空格!!!我因为没处理行末空格wrong了1次return 0;
}

转载于:https://www.cnblogs.com/LinqiongTaoist/p/7203756.html

【NOIP普及组】2016模拟考试(10.29)——排座椅相关推荐

  1. JZOJ(中山纪念中学) 2018.02.02【NOIP普及组】模拟赛D组

    本次题目:2018.02.02[NOIP普及组]模拟赛D组 第一题 题目:第一题 公牛数字 题意: 求题目给出两个数字的乘积 分析: 这题明显只是考察学生的高精可我居然没做对,只要多练习几次,即可AC ...

  2. 纪中集训2020.01.13【NOIP普及组】模拟赛C组总结————My First Time Write Summary

    纪中集训2020.01.13[NOIP普及组]模拟赛C组总结 题目编号 标题 0 [NOIP普及组模拟]取值( numbers.pas/cpp) 1 [NOIP普及组模拟]数对(pairs.pas/c ...

  3. 2020.04.08【NOIP普及组】模拟赛C组24 总结

    2020.04.08 2020.04.08 2020.04.08[ N O I P NOIP NOIP普及组]模拟赛 C C C组 24 24 24 总结 概述: 这次比赛我 A K AK AK了,拿 ...

  4. 纪中集训2020.01.16【NOIP普及组】模拟赛C组总结+【0.Matrix】分析

    纪中集训2020.01.16[NOIP普及组]模拟赛C组总结+[0.Matrix]分析 题目: 0.matrix 1.product 2.binary 3.value 巨佬估分:100+100+40+ ...

  5. 【NOIP普及组2016】魔法阵

    @魔法阵@ @前言@ @题目描述@ @题目分析-暴力枚举O(m^4)@ @开始优化-桶思想优化O(n^3)@ @高端操作-学不来的数学分析O(n^2)@ @END@ @前言@ 听闻老前辈们道这道题好像 ...

  6. 2016.10.05【初中部 NOIP普及组 】模拟赛题解

    这次比赛又翻车了....... T1 这道题一开始以为是一道大水题,格外简单:把分子乘起来,把分母也乘起来,然后约分.但看到数据后,发现这样根本不行:一千个数,最大不超过一千(就是999),最大的积就 ...

  7. 2019.01.29【NOIP普及组】模拟赛C组总结

    总结: 这次比赛的得分是:30+100+100+100=330 第一题有点蒙,想到了一个突破点,但因为知识太少,不了解对数,只打了一个很水的表,第二题想了会,想到了一种解法,然后写了15分钟左右,第三 ...

  8. 2017.03.04【NOIP 普及组】模拟赛C组 T4:泽泽在埃及

    **[2011.12.10普及模拟]泽泽在埃及 ** 题目描述 泽泽已52:0的比分输了球,被足球流氓打了一顿,扔进了窨井里-- 出来的时候,泽泽已经在埃及了. 滚滚的黄沙在周围飞舞,没有一样生物在这 ...

  9. JZOJ(中山纪中)2018.01.21【NOIP普及组】模拟赛D组(第二题)

    1361. [2011.12.31普及模拟]抓捕嫌疑犯(suspect)  (File IO): input:suspect.in output:suspect.out 时间限制: 1000 ms   ...

  10. NOIP 普及组 2016 回文日期

    传送门 https://www.cnblogs.com/violet-acmer/p/9859003.html 题解: 思路1: 相关变量解释: year1,month1,day1 : date1对应 ...

最新文章

  1. Android 热修复总结
  2. 允许自行设计赛道之后,参赛同学都想到了什么呢?
  3. 使用conan编译安装poco
  4. php-fpm 启动拥有者,php-fpm 的各种启动方式
  5. 师弟新作!Nature子刊 | 重大进展!何川团队首次系统地获得了19个组织的5hmC图谱
  6. 加工生产调度(信息学奥赛一本通-T1425)
  7. 又崩了?苹果发生大规模网络故障:多项服务受影响 目前已恢复
  8. java如何解析word大纲_java解析word文件
  9. 假期还剩 2 天,Python 爬取途牛网,揭秘哪里人少景美!
  10. Focal loss及其实现
  11. 大一java题库及答案_2016最新java考试题库及答案
  12. 适用于iOS的远程桌面软件
  13. ISDEV : error -6003的解决办法
  14. 电池的类型,你真的了解吗?
  15. DBSCAN聚类算法原理及图解
  16. 爱奇艺逗芽表情搜索分析与实践
  17. UnsupportedOperationException异常解决
  18. 2014-02-27 23:00 2014年最新GHOST_win7_64位旗舰版系统下载
  19. mac-使用屏幕共享功能
  20. 河南ISO14001环境管理体系认证流程是什么?

热门文章

  1. Appcan开发笔记:导出Excel文件
  2. python中pickle简介
  3. nanflash编程的地址问题
  4. 如何保证电子邮件的安全
  5. C++实现有序表折半查找
  6. Map集合HashMap TreeMap的输出方法
  7. Vue—基础概念—实例
  8. (二)Mac系统Nginx的安装
  9. #pragma multi_compile_fwdbase会增加很多个shader variants
  10. LeetCode求能够装得最多的水