问题 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. TLS就是SSL的升级版+网络安全——一图看懂HTTPS建立过程——本质上就是引入第三方监管,web服务器需要先生成公钥和私钥,去CA申请,https通信时候浏览器会去CA校验CA证书的有效性...
  2. SpringMVC中@ResponseBody和@RequestBody的使用
  3. position定位说明
  4. java中四种线程池的区别
  5. 浏览器 JavaScript HTTP 库的大比拼:SugerAgent VS Axios
  6. 【JZOJ5911】Travel
  7. ‘nvidia-smi‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  8. Zbrush学习笔记十——制作毛发、模型减面
  9. Postman汉化中文版
  10. 如何解决u盘不能拷贝超过4G的大文件
  11. android root 的作用,安卓手机Root好不好?手机Root后有什么好处和影响?
  12. 论文笔记《ST-GRAT: A Novel Spatio-temporal Graph Attention Network for Accurately Forecasting》
  13. Nand Flash入门基本概念
  14. 初探富文本之编辑器引擎
  15. Abaqus2019的abaqus_v6.env在哪里
  16. 男生心疼女生的12种方式
  17. 饭后吃一种水果就能化痰止咳(附赠10个化痰小偏方)
  18. 大数据全网最佳学习路线总结,不看肯定后悔
  19. 2020.6.12 HCIE RS LAB战报
  20. 菲律宾德拉斯大学计算机专业,2020年菲律宾大学以及各专业排行榜

热门文章

  1. windows查看文件MD5值
  2. React Native中常用ES6语法
  3. laravel5.4 关于select下拉框读取数据库数据案例
  4. JAVA 面向对象-2-继承(Inheritance)
  5. Object-C学习代码【简单的Car程序】
  6. 【ASP.NET】服务器控件大演练与实例分析
  7. ICS SIP Call移植
  8. 三种监控平台配置及其整合(cacti nagios ganglia)
  9. 【Android】Home键
  10. error: invalid use of incomplete type 'XXXX' ;error: forward declaration of 'XXXX' 声明改为包含头文件