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

题解:洛谷 P1056 [NOIP 2008 普及组] 排座椅

P1056 [NOIP 2008 普及组] 排座椅(贪心,排序)

题意

\(D\) 对同学上课时会交头接耳。同学们坐成 \(M\)\(N\) 列,第 \(i\) 行第 \(j\) 列的位置是 \((i,j)\),为了方便同学们进出,教室里有 \(K\) 条横向通道,\(L\) 条纵向通道。求出最好的通道划分方案。在该方案下,上课时交头接耳的学生的对数最少。

数据范围与约定

对于 \(100\%\) 的数据,保证:

\(2 \le N,M \le 1000;\)

\(0 \le K<M;\)

\(0 \le L<N,0\le D \le 2000\)

题解

统计每个通道能分割的对数,选择最多的前 \(K\) 个或 \(L\) 个,对这 \(K\) 个或 \(L\) 个对位置进行升序排序即可(有点模拟的感觉)。

CODE

#include <bits/stdc++.h>
using namespace std;
/*====================*/
using ll=long long;
/*====================*/
#define endl '\n'
/*====================*/
int m, n, k, l, d; 
/*====================*/
struct Unit
{int cut, pos;Unit(int cut_ = 0, int pos_ = 0){cut = cut_, pos = pos_;}
}; 
/*====================*/
const int N = 1e3 + 10;
/*====================*/
Unit cnt_row[N], cnt_col[N];
/*====================*/
bool Compare_1(const Unit& a, const Unit& b)
{return a.cut > b.cut;	
} bool Compare_2(const Unit& a, const Unit& b)
{return a.pos < b.pos;
}
/*====================*/
void Solve()
{cin >> m >> n >> k >> l >> d;for (int i = 1; i <= d; i++){int x, y, p, q;cin >> x >> y >> p >> q;if (x == p){cnt_col[min(y, q)].cut++;}else{cnt_row[min(x, p)].cut++;}}for (int i = 1; i <= m - 1; i++){cnt_row[i].pos = i;}for (int i = 1; i <= n - 1; i++){cnt_col[i].pos = i;}sort(cnt_row + 1, cnt_row + m, Compare_1);sort(cnt_col + 1, cnt_col + n, Compare_1);vector<Unit> rows, cols;for (int i = 1; i <= k; i++){rows.push_back(cnt_row[i]);}for (int i = 1; i <= l; i++){cols.push_back(cnt_col[i]);}sort(rows.begin(), rows.end(), Compare_2);sort(cols.begin(), cols.end(), Compare_2);for (auto r : rows){cout << r.pos << " ";}cout << endl;for (auto c : cols){cout << c.pos << " ";}
}
/*====================*/
int main()
{ios::sync_with_stdio(false);cin.tie(nullptr),cout.tie(nullptr);int T=1;//cin>>T;while(T--)Solve();return 0;
}
http://www.jsqmd.com/news/330447/

相关文章:

  • 3500
  • PSO-GRU多变量回归预测:Matlab中的粒子群优化门控循环单元程序
  • 利用fpga搭建永磁同步电机电机svpwm的源码,采用的是verilog搭建底层框架,利用ni...
  • 2026铝板铝皮采购问答式指南
  • 2026智推时代GEO优化对接指南:合作全流程指引
  • Serverless架构实战:使用AWS Lambda构建无服务器数据处理管道
  • 【网友委托的爬虫代码】KanAcademyTranscriptsSprider.py(网站有反爬虫,做不了)
  • 基于ASP的毕业论文管理系统的设计与实现 开题报告
  • Flink在大数据领域的安全漏洞防范
  • 基于Android的课堂教学辅助系统 开题报告
  • 2025年12月Scratch图形化编程等级考试四级真题试卷
  • 2026年1月专业评测|主流GEO优化服务商优选机构权威推荐
  • 别被“伪自律”绑架:为什么你的“中国胃”跑不动“西式沙拉”?
  • 数据中台在大数据领域的应用挑战与解决方案
  • 聚焦国内高端女装连衣裙市场:五大品牌风格解析与核心竞争力盘点
  • 基于ASPNET的音乐网站 开题报告
  • 利用RabbitMQ提升大数据系统的消息吞吐量
  • 揭秘MrBeast爆款视频的底层算法:四小时逆向工程揭示病毒式传播公式
  • 基于Android的校园食堂点餐系统的设计与实现--开题报告
  • 基于Android的玩转化妆美妆APP的设计与实现 开题报告2
  • 题解:P1007 独木桥
  • Java面试必看:start()和run()哪个才是正确的线程启动方式?
  • 2026年豆包GEO优化服务商权威指南:从技术到效果落地全流程方案
  • 基于Android的学生信息管理系统 开题报告
  • 无忧花客服AI流量赋能创新,重塑体验新标杆
  • 基于Android的校园商品交易系统的 开题报告
  • 2026年2月美妆行业GEO优化公司实测推荐:AI推荐率翻倍策略
  • 终极笔记应用程序Alexandrie - 教程
  • 【极速部署】Ubuntu24.04+CUDA13.0 玩转 VLLM 0.15.0:预编译 Wheel 包 GPU 版安装全攻略
  • - 标题:基于matlab的眼球实时跟踪系统 - 关键词:matlab GUI 数字图像处理 ...