https://www.luogu.com.cn/problem/P1056
考点:贪心、排序

题意:
有M行N列的格子,D只长度为2的虫子(可横可竖),横向纵向分别可以切K,L刀,问怎样切可以切死最多的虫子。
。。。
其实原题是用走廊拆开上课交头接耳的学生,不知道为啥我觉得翻译成上面的文字更好理解。
这个题的主要坑点是这一句:

就是说不仅要最优切法,而且要按行列号升序输出。

解法:
很基础的贪心+排序。输入数据的时候,每条“虫子”都砍一刀,记录在该位置砍了一刀,最后看看哪个位置砍的刀数最多,那么这个位置就要优先选择。以横向砍为例,排序后就确定了前K个要砍的位置,然后给这K个再按行号升序排序,就可以输出了。
总共4次排序,数据量不大,可以接受。

#include <bits/stdc++.h>
using namespace std;
using PII = pair<int,int>;
int M,N,K,L,D;
PII RowCut[1005]; // 某行砍了多少刀
PII ColCut[1005]; // 某列砍了多少刀
// 某一行(列)被砍的刀数越多,说明在这个地方设置走廊的效果越好,排个序,从高到低取K(L)个
int main() {cin >> M >> N >> K >> L >> D;for (int i = 0; i < D; i++) {int a,b,c,d; cin >> a >> b >> c >> d;if (a == c) {ColCut[min(b, d)].first++;} else {RowCut[min(a, c)].first++;}}// second保存行列号for (int i = 1; i < M; i++) RowCut[i].second = i;for (int i = 1; i < N; i++) ColCut[i].second = i;// 按照被切数降序排序sort(RowCut + 1, RowCut + M, [](PII &a, PII &b){ return a.first != b.first ? a.first > b.first : a.second < b.second;});sort(ColCut + 1, ColCut + N, [](PII &a, PII &b){ return a.first != b.first ? a.first > b.first : a.second < b.second;});// 按行号升序sort(RowCut + 1, RowCut + 1 + K, [](PII &a, PII &b){return a.second != b.second ? a.second < b.second : a.first > b.first;});sort(ColCut + 1, ColCut + 1 + L, [](PII &a, PII &b){return a.second != b.second ? a.second < b.second : a.first > b.first;});for (int i = 1; i <= K; i++) {if (i != K) cout << RowCut[i].second << " ";else cout << RowCut[i].second << endl;}for (int i = 1; i <= L; i++) {if (i != L) cout << ColCut[i].second << " ";else cout << ColCut[i].second;}return 0;
}

这题没有任何难度,卡了是因为没仔细读题!!

【贪心】P1056 排座椅相关推荐

  1. 洛谷P1056 排座椅

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

  2. 洛谷——P1056 排座椅

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

  3. P1056 排座椅(模拟)

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

  4. 普及组2008NOIP 排座椅(贪心+排序)

    排座椅 时间限制: 1 Sec  内存限制: 50 MB 提交: 4  解决: 3 [提交][状态][讨论版][命题人:外部导入] 题目描述 上课的时候总有一些同学和前后左右的人交头接耳,这是令小学班 ...

  5. 【NOIP普及组】2016模拟考试(10.29)——排座椅

    问题 B: 排座椅(seat.cpp) 时间限制: 1 Sec  内存限制: 64 MB 题目描述 上课的时候总有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发 ...

  6. [NOIP2008]排座椅

    题目: [NOIP2008]排座椅 ,哈哈,我们今天来看一道稍微复杂一点贪心算法的题嘛,这是选自NOIP普及组上的一道题,好了,我们一起来看看题意吧: 题目描述是复制的,可能有部分显示不对,我就把题目 ...

  7. GMOJ - 2021.07.20【普及组】模拟赛C组 - 排座椅(seat)、传球游戏(ball)、立体图(drawing)、间谍派遣、seek

    文章目录 luogu博客链接 GMOJ - 2021.07.20[普及组]模拟赛C组 - 排座椅(seat).传球游戏(ball).立体图(drawing).间谍派遣.seek T1 排座椅(seat ...

  8. 洛谷1056 排座椅 解题报告

    洛谷1056 排座椅 本题地址: http://www.luogu.org/problem/show?pid=1056 题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头 ...

  9. 排座椅(洛谷-P1056)

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

最新文章

  1. python在线编辑器最新_skulpt搭建Python在线编译器(一):下载、安装
  2. 软件测试中7个令人匪夷所思的真理
  3. 各种不同几何形状布局布阵下的GDOP相对值图
  4. HDU 1225 覆盖的面积
  5. 为了证明自己有多能喝,理工科的学生竟做出这种事
  6. java io怎么学_Java IO 初学者 怎么都弄不出来
  7. [Udacity] Machine Learning tools
  8. 火币生态链项目SuperNova与Poly Network达成战略合作
  9. 大疆aeb连拍_大疆 AIR2 玩机(一)包围曝光及后期处理
  10. mysql 不同服务器数据库表同步_mysql 不同服务器数据库表同步
  11. Mysql-mmm配置全自动切换主从关系和读写分离
  12. 全局变量不能放在头文件其中
  13. Vue.js 2.0从入门到放弃---入门实例(二)
  14. 用CSS编写登陆页面(含源代码)
  15. 云桌面优缺点_云桌面的缺点分析
  16. ib网卡命令_linux安装卸载IB网卡(mellanox)驱动
  17. win10 永久删除自带微软拼音输入法
  18. CAN、485隔离电路分享
  19. mysql 查询当前时间到毫秒_MySQL 关于毫秒和微秒的处理,MySQL获取毫秒!
  20. 如何快速提高Python能力

热门文章

  1. 成功解决PackagesNotFoundError: The following packages are not available from current channels: tensorflo
  2. ML之FE:基于LiR/Ridge/Lasso/ElasticNet/AvgModels/RF算法(GSCV) 利用某市房价数据集(特征工程处理)进行房价回归预测
  3. AI公开课:19.04.18俞益洲—深睿医疗CS《计算机视觉的应用与落地》课堂笔记以及个人感悟
  4. DayDayUp:《P2P行业最高端的玩法》源于网友网络收集
  5. qmake 之 CONFIG 与 QT 乱谈
  6. bzoj3714:[PA2014]Kuglarz
  7. Informix存储过程
  8. 第七章 综合练习 第四题
  9. C++ Primer 有感(类)
  10. 检查字符串首字母的性能