普及组2008NOIP 排座椅(贪心+排序)
排座椅
时间限制: 1 Sec 内存限制: 50 MB
提交: 4 解决: 3
[提交][状态][讨论版][命题人:外部导入]
题目描述
上课的时候总有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情。不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳。同学们在教室中坐成了M行N列,坐在第i行第j列的同学的位置是(i, j),为了方便同学们进出,在教室中设置了K条横向的通道,L条纵向的通道。于是,聪明的小雪想到了一个办法,或许可以减少上课时学生交头接耳的问题:她打算重新摆放桌椅,改变同学们桌椅间通道的位置,因为如果一条通道隔开了两个会交头接耳的同学,那么他们就不会交头接耳了。
请你帮忙给小雪编写一个程序,给出最好的通道划分方案。在该方案下,上课时交头接耳的学生对数最少。
输入
接下来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...bk,表示第b1列和b1+1列之间、第b2列和第b2+1列之间、...、第bL列和第bL+1列之间要开辟通道,其中bi<bi+1,每两个整数之间用空格隔开(行尾没有空格)。
下面是对样例数据的解释:
上图中用符号*、※、+标出了3对会交头接耳的学生的位置,图中3条粗线的位置表示通道,图示的通道划分方案是唯一的最佳方案。
样例输入
4 5 1 2 3
4 2 4 3
2 3 3 3
2 5 2 4
样例输出
2
2 4
提示
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std; struct edge
{
int num;
int sum;
}; bool cmp1(edge a,edge b)
{
return a.sum > b.sum;
} bool cmp2(edge a,edge b)
{
return a.num < b.num;
} edge row[];
edge col[]; int main()
{
int M,N,K,L,D;
while(cin >> M )
{
cin >> N >> K >> L >> D;
int i;
for(i = ;i < M;i++)
{
row[i].num = i + ;
row[i].sum = ;
}
for(i = ;i < N;i++)
{
col[i].num = i + ;
col[i].sum = ;
}
for(i = ;i < D;i++)
{
int a,b,x,y;
cin >> a >> b >> x >> y;
if(a == x)
{
col[min(b,y) - ].sum++;;
}
if(b == y)
{
row[min(a,x) - ].sum++;
}
}
//陷阱一:注意号码要升序输出,注意要再排一次序
sort(row,row+M,cmp1);
sort(col,col+N,cmp1);
sort(row,row+K,cmp2);
sort(col,col+L,cmp2);
//注意:最后一项后面不必输出空格
for(i = ;i < K;i++)
{
if(i != K - )
cout << row[i].num << ' ';
else
cout << row[i].num;
}
cout << endl; for(i = ;i < L;i++)
{
if(i != L - )
cout << col[i].num << ' ';
else
cout << col[i].num;
}
cout << endl;
}
return ;
}
普及组2008NOIP 排座椅(贪心+排序)的更多相关文章
- NOIP2008 普及组T2 排座椅 解题报告-S.B.S
题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳.同学 ...
- 洛谷 P1056 排座椅 桶排序
桶排序大法好! 每次一看到这种范围小的题,本萌新就想用桶排. 因为题目中的m,n都小于1000,我们就可以定义两个1000的数组,表示每一行或每一列可以隔开几对讲话的童鞋. 然后再定义两个1000的数 ...
- TZOJ 4855 排座椅(贪心)
描述 上课的时候总有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来后,只有有限的D对同学上课时会交头接耳.同学们在教室 ...
- 洛谷 P1056 排座椅【贪心/结构体排序】
题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳.同学 ...
- NOIP2002-2017普及组题解
虽然普及组一般都是暴力省一,但是有一些题目还是挺难的qwq个人觉得能进TG的题目会在前面打上'*' NOIP2002(clear) #include<bits/stdc++.h> usin ...
- 【洛谷】题解 P1056 【排座椅】
题目链接 因为题目说输入保证会交头接耳的同学前后相邻或者左右相邻,所以一对同学要分开有且只有一条唯一的通道才能把他们分开. 于是可以吧这条通道累加到一个数组里面.应为题目要求纵列的通道和横列的通道条数 ...
- 洛谷 P1056 排座椅 题解
P1056 排座椅 题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的 \(D\ ...
- NOIP2008普及组 题解 -SilverN
T1 ISBN号码 题目描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符, 其规定格式如“x-xxx-xxxxx-x”,其中符号“-”就是分隔符( ...
- NOIP2008普及组题解
NOIP2008普及组题解 从我在其他站的博客直接搬过来的 posted @ 2016-04-16 01:11 然后我又搬回博客园了233333 posted @ 2016-06-05 19:19 T ...
随机推荐
- [ SSH 两种验证方式原理 ]
SSH登录方式主要分为两种: 1. 用户名密码验证方式 说明: (1) 当客户端发起ssh请求,服务器会把自己的公钥发送给用户: (2) 用户会根据服务器发来的公钥对密码进行加密: (3) 加密后的信 ...
- Selenium学习笔记(1) - 自动化测试体系与原理
技术体系 基于代码的测试(Code-Based Testing) 基于协议的测试(Protocol-Based Testing) 基于界面的测试(GUI-Based Testing) 工作原理 基于代 ...
- [转]Python读写文件
1.open使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('thefile.txt ...
- Webpack——解决疑惑,让你明白
Webpack——解决疑惑,让你明白 极客教程 作者 关注 2016.09.29 17:46* 字数 2868 阅读 22204评论 22喜欢 80 Webpack是目前基于React和Redux开发 ...
- day5-shelve模块
一.概述 前面章节我们讲述了json和pickle模块的序列化和反序列化处理,他们有一个不足是在python 3中不能多次dump和load,shelve模块则可以规避这个问题.shelve模块是一个 ...
- 22-THREE.JS 面材质
<!DOCTYPE html> <html> <head> <title>Example 04.05 - Mesh face material</ ...
- Activity传递参数——传递复杂数据(Bunble包)
一.新建一个空的工程 二.在主界面中添加一个按钮 三.新建一个空的activity,并命名为TheAty 四.修改MainActivity.java中的onCreate函数 protected voi ...
- Activiti 教程
Activiti入门教程:http://blog.csdn.net/column/details/activitizhou.html Activiti 5.15 用户手册:http://www.cnb ...
- java调用cmd执行maven命令
一.原理介绍 Java的Runtime.getRuntime().exec(commandStr)可以调用执行cmd指令. cmd /c dir 是执行完dir命令后封闭命令窗口. cmd /k di ...
- Arcgis andoid开发之应用百度地图接口实现精准定位与显示
怀着激动.兴奋的心情,在这个漫天柳絮的季节写下了这片博文,为什么呢,因为困扰我很久的一个技术性的问题得到了解决,发次博文,供大家参观.学习,同时,也以慰藉我长期困扰的心情,好了,废话不再,言归正传,看 ...