题目描述

又到了辅导学弟学妹们上机的时候了,学长们都非常踊跃报名。那么问题来了,如何安排上机呢?现在将问题简化一下:一共需要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 辅导上机(模拟)相关推荐

  1. 浙江大学软件学院2020年保研上机模拟练习 7-4 Shopping With Coupons

    目录 解题思路演进过程 第一次程序 第二次程序 第三次程序 解题思路演进过程 首先是题目的理解上:有n个商品,n张优惠券,实际上能买的商品个数最多就是n*n,为啥呢,这题默认是买一个商品必须用一张券, ...

  2. 全国计算机等级考试二级vb上机模拟软件,(全国计算机等级考试二级Vb上机模拟9-13.doc...

    全国计算机等级考试二级Vb上机模拟(9) 在考生文件夹下,完成如下操作: (1)建立数据库ordersmanage.dbc,把自由表employee.dbf和orders.dbf添加到数据库中. (2 ...

  3. 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: ...

  4. c语言填空题删除字符串k右边,计算机二级C语言上机模拟试题及解题思路

    计算机二级C语言上机模拟试题及解题思路 随着2017年上半年计算机等级考试的临近,百分网小编为大家整理了2017计算机二级C语言上机模拟试题及解题思路,更多计算机等级考试信息请关注应届毕业生考试网. ...

  5. 计算机上机模拟试题答案,2016计算机二级上机模拟试题及答案

    2016计算机二级上机模拟试题及答案 1.从数据库中删除表的命令是______. A.DROP TABLE * B.ALTER TABLE C.DELETE TABLE D.USE 2.在Visual ...

  6. 计算机二级vf上机试题,计算机二级VF上机模拟题

    计算机二级VF上机模拟题一.基本操作题(共4小题,第1和2题是7分.第3和4题是8分) 在考生文件夹下完成下列操作(在"成绩管理"数据库中完成): 1.为"学生" ...

  7. 大一计算机上机考试模拟试题,计算机等级考试二级上机模拟试题(1)

    计算机等级考试二级上机模拟试卷 上机考试模拟试题(1) 一.填空题 s为一个字符序列, 请补充fun函数, 该函数的功能是: 查找s中值为a的元素, 返回找到值为a的元素个数, 并把这些值为a的元素下 ...

  8. 计算机二级c语言模拟上机,计算机二级C语言上机模拟题

    计算机二级C语言上机模拟题 导语:为方便考生快捷的了解计算机等级考试情况,以下是小编为大家精心整理的计算机二级C语言上机模拟题,欢迎大家参考! 函数fun的功能是:计算的前n项.若x=2.5,函数值为 ...

  9. 浙江大学软件学院2020年保研上机模拟练习

    浙江大学软件学院2020年保研上机模拟练习 7-1.Standard Form of Polynomial (20分) 7-2.Distance of Triples (25分) 7-3. Parti ...

最新文章

  1. 什么是java四大引用?
  2. STM32F10x 使用SysTick的延时函数
  3. eclipse搭建Android开发环境
  4. 对于早期Servlet内核你清楚吗,这些基础的东西,不能忘哦
  5. 前端和java选哪个_web前端和java哪个好?新手该选择哪个
  6. 基于单片机的智能密码锁设计
  7. 【渝粤教育】电大中专跨境电子商务理论与实务 (25)作业 题库
  8. VS Code、IDEA开发工具及插件
  9. 指数函数e^x和对数函数lnx 导数的求导过程
  10. 杨过最后达到了独孤求败的什么境界, 其实金庸在书中已说明
  11. Minimum supported Gradle version问题解决方法
  12. 03-Minisys-1的典型指令详解
  13. [SHOI2017]期末考试
  14. openssl 加密解密 指令_openssl命令aes加密和解密
  15. 如何查看笔记本电脑的型号?
  16. C/C++ Linux 后台服务器开发高级架构师学习知识路线总结
  17. Python音乐跳舞毯(基于海龟画图创作的作品,来自Python创意编程100例sprites篇_Python精灵模块)
  18. Redis 分布式算法原理
  19. 男人的快乐不就来了?
  20. robomongo 连不上mongodb 权限问题

热门文章

  1. zemax场曲畸变图_《ZEMAX光学设计超级学习手册》一一2.4 像分析
  2. 八卦走转--铁恩方老先生创立的健身方法
  3. 网络是新冷战,人工智能是军备竞赛
  4. R语言使用mgcv包的gam函数拟合广义加性模型回归模型:使用predict函数和训练好的模型进行预测推理、使用ggplot2可视化预测值和实际值的曲线进行对比分析
  5. 也门亚丁一炼油厂爆炸起火造成数人受伤
  6. 利用shell脚本将json文件导入es
  7. 怎么制作app系统软件,大概需要多少钱
  8. 我用加强版RFM模型,轻松扒出B站优质up主!(含数据+实战代码)
  9. Photoshop CC 2017 One-on-One: Fundamentals Photoshop CC 2017 系列进阶教程之基础训练 Lynda课程中文字幕
  10. java读取excel大文件