HNUST 辅导上机(模拟)
题目描述
又到了辅导学弟学妹们上机的时候了,学长们都非常踊跃报名。那么问题来了,如何安排上机呢?现在将问题简化一下:一共需要n节课(编号从1到n)的辅导上机,正好有n位学长(编号从1到n)报名,用二维矩阵A表示学长们的情况,A[i][j]表示第i个学长第第j节课是否有时间(1表示有时间,0表示忙)。为了进一步简化问题,假设一定存在将学长们按一定顺序排列后,前一位学长的合适时间集合包含后一位学长(也就是后一位学长哪节课有时间,那么前一位学长一定有时间,反过来就不一定了)。每节课都需要有学长辅导,同时为了满足大家辅导上机的热情,规定每个人恰好参与一次。现在问聪明的你能找到这样的方案吗?(能输出“Yes”,不行输出“No”)
输入
包含多组数据(数据组数小于200),每组数据第一行输入n(1<=n<=20),表示有n节课需要辅导和n位学长报名,接下来是n行n列矩阵表示学长们的情况(0表示忙,1表示有时间)。数据保证一定满足题目假设。
输出
每组数据输出一行,能找到方案输出“Yes”, 不能找到这样的方案输出“No”。
样例输入
5
0 0 0 0 1
0 1 1 1 1
0 1 1 1 1
1 1 1 1 1
0 0 0 0 1
3
1 1 1
1 1 0
0 1 0
样例输出
No
Yes
提示
如样例中1,用集合表示每一位学长的合适时间,分别是{5} 、{2,3,4,5} 、{2,3,4,5} 、{1,2,3,4,5} 、{5} ,他们按照一定顺序排列后满足关系:{1,2,3,4,5} ⊇ {2,3,4,5} ⊇ {2,3,4,5}⊇ {5} ⊇ {5} 找不到方案让每个人都参与一次,所以输出No。提示:往题目给定限制(存在包含关系)思考,也就没那么难。来源:唐志强
链接:http://acm.hnust.edu.cn/JudgeOnline/problem.php?id=1744
思路:根据包含关系,知道排完序后,后面的学长有的前面的学长肯定有,那么就从后面的学长开始安排,安排掉一个少一个,同时其他学长该时间不必辅导,则置为0,一旦安排的过程中出现有学长的全部都是0,则安排不了。
代码:
//我是从小到大
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <cstdio>
using namespace std;
struct shang
{int a[30];int cnt;bool operator < ( const shang &b ) const //按能安排的时间的多少从小到大排序{return cnt < b.cnt;}
}xue[30];
int main()
{int n;while(cin >> n){for(int i=0; i<n; i++){xue[i].cnt = 0;for(int j=0; j<n; j++){cin >>xue[i].a[j];if(xue[i].a[j] == 1)xue[i].cnt++;}}sort(xue,xue+n);int flag = 1;for(int i=0; i<n; i++){int j=0;while(xue[i].a[j] == 0 && j != n) //由于从最少的开始找,只要找第一个有空的时间{j++;}if(j == n) //该学长全都没有空{cout << "No" << endl;flag = 0;break;}for(int k=0; k<n; k++) //该时间的其他学长不需要辅导{xue[k].a[j] = 0;}memset(xue[i].a, 0 ,sizeof xue[i].a); //安排完一个学长了}if(flag)cout <<"Yes" << endl;}return 0;
}
HNUST 辅导上机(模拟)相关推荐
- 浙江大学软件学院2020年保研上机模拟练习 7-4 Shopping With Coupons
目录 解题思路演进过程 第一次程序 第二次程序 第三次程序 解题思路演进过程 首先是题目的理解上:有n个商品,n张优惠券,实际上能买的商品个数最多就是n*n,为啥呢,这题默认是买一个商品必须用一张券, ...
- 全国计算机等级考试二级vb上机模拟软件,(全国计算机等级考试二级Vb上机模拟9-13.doc...
全国计算机等级考试二级Vb上机模拟(9) 在考生文件夹下,完成如下操作: (1)建立数据库ordersmanage.dbc,把自由表employee.dbf和orders.dbf添加到数据库中. (2 ...
- c语言中isnarc变量,C语言 二级 1-40上机模拟试题答案.doc
C语言 二级 1-40上机模拟试题答案 1~40套模拟试题的简单应用和综合应用的答案 一: 2(1): index n n+2 n f1 2(2): s s,s1 <> str(n) 3: ...
- c语言填空题删除字符串k右边,计算机二级C语言上机模拟试题及解题思路
计算机二级C语言上机模拟试题及解题思路 随着2017年上半年计算机等级考试的临近,百分网小编为大家整理了2017计算机二级C语言上机模拟试题及解题思路,更多计算机等级考试信息请关注应届毕业生考试网. ...
- 计算机上机模拟试题答案,2016计算机二级上机模拟试题及答案
2016计算机二级上机模拟试题及答案 1.从数据库中删除表的命令是______. A.DROP TABLE * B.ALTER TABLE C.DELETE TABLE D.USE 2.在Visual ...
- 计算机二级vf上机试题,计算机二级VF上机模拟题
计算机二级VF上机模拟题一.基本操作题(共4小题,第1和2题是7分.第3和4题是8分) 在考生文件夹下完成下列操作(在"成绩管理"数据库中完成): 1.为"学生" ...
- 大一计算机上机考试模拟试题,计算机等级考试二级上机模拟试题(1)
计算机等级考试二级上机模拟试卷 上机考试模拟试题(1) 一.填空题 s为一个字符序列, 请补充fun函数, 该函数的功能是: 查找s中值为a的元素, 返回找到值为a的元素个数, 并把这些值为a的元素下 ...
- 计算机二级c语言模拟上机,计算机二级C语言上机模拟题
计算机二级C语言上机模拟题 导语:为方便考生快捷的了解计算机等级考试情况,以下是小编为大家精心整理的计算机二级C语言上机模拟题,欢迎大家参考! 函数fun的功能是:计算的前n项.若x=2.5,函数值为 ...
- 浙江大学软件学院2020年保研上机模拟练习
浙江大学软件学院2020年保研上机模拟练习 7-1.Standard Form of Polynomial (20分) 7-2.Distance of Triples (25分) 7-3. Parti ...
最新文章
- 什么是java四大引用?
- STM32F10x 使用SysTick的延时函数
- eclipse搭建Android开发环境
- 对于早期Servlet内核你清楚吗,这些基础的东西,不能忘哦
- 前端和java选哪个_web前端和java哪个好?新手该选择哪个
- 基于单片机的智能密码锁设计
- 【渝粤教育】电大中专跨境电子商务理论与实务 (25)作业 题库
- VS Code、IDEA开发工具及插件
- 指数函数e^x和对数函数lnx 导数的求导过程
- 杨过最后达到了独孤求败的什么境界, 其实金庸在书中已说明
- Minimum supported Gradle version问题解决方法
- 03-Minisys-1的典型指令详解
- [SHOI2017]期末考试
- openssl 加密解密 指令_openssl命令aes加密和解密
- 如何查看笔记本电脑的型号?
- C/C++ Linux 后台服务器开发高级架构师学习知识路线总结
- Python音乐跳舞毯(基于海龟画图创作的作品,来自Python创意编程100例sprites篇_Python精灵模块)
- Redis 分布式算法原理
- 男人的快乐不就来了?
- robomongo 连不上mongodb 权限问题
热门文章
- zemax场曲畸变图_《ZEMAX光学设计超级学习手册》一一2.4 像分析
- 八卦走转--铁恩方老先生创立的健身方法
- 网络是新冷战,人工智能是军备竞赛
- R语言使用mgcv包的gam函数拟合广义加性模型回归模型:使用predict函数和训练好的模型进行预测推理、使用ggplot2可视化预测值和实际值的曲线进行对比分析
- 也门亚丁一炼油厂爆炸起火造成数人受伤
- 利用shell脚本将json文件导入es
- 怎么制作app系统软件,大概需要多少钱
- 我用加强版RFM模型,轻松扒出B站优质up主!(含数据+实战代码)
- Photoshop CC 2017 One-on-One: Fundamentals Photoshop CC 2017 系列进阶教程之基础训练 Lynda课程中文字幕
- java读取excel大文件