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

蓝桥杯 18.分考场

分考场

原题目链接

题目描述

n 个人参加某项特殊考试。

为了公平,要求任何两个认识的人不能分在同一个考场

你的任务是求出最少需要分几个考场才能满足这个条件。


输入描述

  • 第一行:一个整数 n,表示参加考试的人数(1 ≤ n ≤ 100)。
  • 第二行:一个整数 m,表示接下来有 m 行数据。
  • 接下来 m 行:每行两个整数 a, b,表示第 a 个人与第 b 个人认识(1 ≤ a, b ≤ n)。

输出描述

输出一个整数,表示最少需要的考场数。


输入样例

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

输出样例

4

c++代码

#include<bits/stdc++.h>using namespace std;vector<unordered_set<int>> st;
vector<vector<int>> arr;int n, m, a, b, ans = INT_MAX, myclass = 0;void dfs(int index) {if (myclass >= ans) return;if (index == n + 1) {ans = min(ans, myclass);return;}for (int i = 1; i <= myclass; i++) {bool key = true;for (int x : arr[index]) {if (st[i].find(x) != st[i].end()) {key = false;break;}}if (key) {st[i].insert(index);dfs(index + 1);st[i].erase(index);}}myclass++;st[myclass].insert(index);dfs(index + 1);st[myclass].erase(index);myclass--;
}int main() {cin >> n >> m;arr = vector<vector<int>>(n + 1);st = vector<unordered_set<int>>(101);while(m--) {cin >> a >> b;arr[a].push_back(b), arr[b].push_back(a);}dfs(1);cout << ans;return 0;
}//by wqs

题目解析

这个题目就是个暴力题,会用题目的认识关系剪枝就行。

对于第index个人,假设当前有myclass(初始化为0)个教室,枚举1 - myclass个教室,让index加入,取最终需要教室最小的就行,当然如果这间教室有index认识的人,就枚举下一个教室,也就是剪枝。

for (int i = 1; i <= myclass; i++) {bool key = true;for (int x : arr[index]) {if (st[i].find(x) != st[i].end()) {key = false;break;}}if (key) {st[i].insert(index);dfs(index + 1);st[i].erase(index);}
}

当然还有一种情况,对于第index个人,可以去一个全新的教室

myclass++;
st[myclass].insert(index);
dfs(index + 1);
st[myclass].erase(index);
myclass--;

相关文章:

  • 室外摄像头异常自检指南+视频监控系统EasyCVR视频质量诊断黑科技
  • 如何平衡质量与进度的矛盾
  • L1-105 珍惜生命 - java
  • 安卓逆向工程:从APK到内核的层级技术解析
  • 使用json_repair修复大模型的json输出错误
  • 深入探索Qt异步编程--从信号槽到Future
  • 图形编辑器基于Paper.js教程27:对图像描摹的功能实现,以及参数调整
  • GPT-4.1 开启智能时代新纪元
  • OSPF数据包及工作过程
  • PaginationInnerInterceptor使用(Mybatis-plus分页)
  • 基于遗传算法的智能组卷系统设计与实现(springboot+ssm+React+mysql)含万字详细文档
  • 【项目管理】成本类计算 笔记
  • 基于 DeepSeek大模型 开发AI应用的理论和实战书籍推荐,涵盖基础理论、模型架构、实战技巧及对比分析,并附表格总结
  • 在ARM Linux应用层下驱动MFRC522
  • vue项目中使用antvX6(可拖拽,vue3)
  • 【Vue】组件基础
  • 浙江大学 DeepSeek 公开课 第三季 第1期讲座 - 唐谈 研究员 (附PPT下载) | 突破信息差
  • 【Linux网络】构建UDP服务器与字典翻译系统
  • 基于LangChain与Neo4j构建企业关系图谱的金融风控实施方案,结合工商数据、供应链记录及舆情数据,实现隐性关联识别与动态风险评估
  • java 使用Caffeine实现本地缓存
  • 宇树的任务已经完成?王兴兴也在等待行业拐点
  • 马文化体验展商圈启动,环球马术冠军赛的能量不止在赛场
  • 外交部:中企在中韩暂定水域建立渔业养殖设施不违反中韩有关协定
  • 美方因涉港问题对中国官员滥施非法单边制裁,外交部:强烈谴责,对等反制
  • 第1现场|俄乌互指对方违反复活节临时停火提议
  • 电子产品已拆封,还能申请“七天无理由退货”吗?上海法院这样判