题目链接UVA - 12108

题目思路:

用f[i]来纪录每个学生当前的状态(是否睡觉)
用now[i]来纪录每个学生处于当前状态的总时间
用first[i]来纪录所有学生最初时处于第几分钟,用于循环中判断是否无解(若后面重复到此状态即为无解)
特殊点:
学生a在第i分钟准备睡觉,对于是否进行睡觉的判断是由第 i - 1分钟得出的。

代码:

#include <stdio.h>
#include <iostream>
#include <vector>
#include <math.h>
#include <algorithm>
#include <queue>
#include <string.h>
#include <set>
#include <stack>
#include <stdlib.h>
#include <time.h>using namespace std;int va[11];//清醒周期长度
int vb[11];//睡觉周期长度
int now[11];//处于当前状态第几分钟
int first[11];//最初处于第几分钟
int f[11];//是否睡觉bool isall(int n)//判断是否与最初状态重合,即判断是否无解
{for(int i=0;i<n;i++){int t = 0;if(f[i])t = va[i];//加上清醒周期的长度,与最初值保持一致if(now[i] + t != first[i])return false;}return true;
}int main()
{int n, T=0;while(cin>>n && n){++T;int time = 1;//当前时间int num = 0;//睡觉总人数for(int i=0;i<n;i++){cin>>va[i]>>vb[i]>>now[i];first[i] = now[i];if(now[i] > va[i]){f[i] = 1;++num;now[i] -= va[i];}elsef[i] = 0;}while(1){if(num == 0)//全部清醒,退出循环break;int t = 0;//本分钟睡觉人数的增减量for(int i=0;i<n;i++){++now[i];if(f[i])//睡{if(now[i] > vb[i]){//开始清醒now[i] = 1;f[i] = 0;--t;}}else{if(now[i] > va[i]){now[i] = 1;if(num*2 > n)//上一分钟睡觉人数是否符合睡觉条件{f[i] = 1;++t;}}}}num += t;if(isall(n)){time = -1;break;}++time;}printf("Case %d: %d\n", T, time);}return 0;
}

UVA - 12108 Extraordinarily Tired Students(特别困的学生)相关推荐

  1. uva 12108 Extraordinarily Tired Students(特别困的学生)

    题目大意: 课堂上有n(n<=10)个学生,每个学生都有一个"睡眠-清醒""周期,其中第i个学生清醒Ai分钟后睡Bi分钟,然后重复(1<=Ai,Bi<= ...

  2. UVA 12108 Extraordinarily Tired Students

    思路: ①用结构体stu,属性有清醒时间,睡眠时间,开始处于的时间,状态(醒着还是睡着), 还有计数器. ②二维数组存表格. ③在确定接下来要进入的状态之后,就一次把表格里持续状态的数据都修改掉,比如 ...

  3. UVa 12108 - Extraordinarily Tired Students(模拟+细节处理)

    输入每个学生的睡眠-清醒周期和当前状态,每个学生在睡觉前都会检查班里人的状态,仅当睡眠人数严格大于清醒人数时才会睡觉,否则继续保持清醒状态持续一个周期.求学生全部清醒的时刻,不存在则输出-1. 现在看 ...

  4. 12108 - Extraordinarily Tired Students(特别困的学生)

    题目: When a student is too tired, he can't help sleeping in class, even if his favorite teacher is ri ...

  5. 12108 - Extraordinarily Tired Students

    水题一遍A,不过要注意一下每个同学临睡前的情况,根据样例就能知道,好好研究样例即可. #include<stdio.h> #include<string.h> int a[15 ...

  6. UVA12108-4.8(ti)-Extraordinarily Tired Students

    UVA12108-4.8(ti)-Extraordinarily Tired Students 题目描述: https://uva.onlinejudge.org/index.php?option=c ...

  7. HDU 2932 Extraordinarily Tired Students (暴力+取模还是很强大的)

    题目链接:HDU 2932 Extraordinarily Tired Students 题意:给出N个学生的状态,(a,b,c).a表示a分钟这醒着,b表示b分钟睡着,c表示刚开始是重周期(a+b) ...

  8. 特别困的学生 (特困生)

    特别困的学生 (特困生) <div style="text-align: left;"><pre name="code" class=&quo ...

  9. 特别困的学生(Extraordinarily Tired Students, ACM/ICPC Xi'an 2006, UVa12108)

    #include <cstdio> #include<iostream> using namespace std;struct student {int wake;int sl ...

最新文章

  1. 软工作业3:词频统计
  2. C#_Math函数总结
  3. 【转载】用 Pyinstaller 来打包 + 解决打包结果过大问题
  4. 自动登录DISCUZ,发帖的代码(部分)
  5. P2237 [USACO14FEB]自动完成Auto-complete
  6. 论文浅尝 | 基于深度强化学习的远程监督数据集的降噪
  7. 随笔 | 写代码时极有可能面临的焦虑
  8. 问题记录 | 配置ubuntu18.04+cuda9.0+cudnn服务器tensorflow-gpu深度学习环境
  9. 树莓派---MAC下安装AndroidThings
  10. 【数据库系统工程师】数据库系统工程师考情分析
  11. 2022年,想自学java有没有一个详细的框架?
  12. 节约里程算法java实现
  13. CMake之add_executable
  14. java processing_1 Processing入门简介
  15. 手把手教你用Python画直方图
  16. 开源云服务器集群管理系统,云树·DMP : 数据库集群管理平台
  17. 极米发布极光RS Pro、H3、Z8X三款新品
  18. ImageWarping变形算法研究---反距离加权插值(IDW)
  19. 扫描二维码 生成二维码
  20. 工程优化设计与matlab实现 课后答案,清华大学出版社-图书详情-《工程优化设计与MATLAB实现(修订版)》...

热门文章

  1. 黑苹果 macOS 10.10 on vmware15安装流程
  2. C语言实例:提取字符串中全部数字
  3. 微信三方代开发公众号消息管理-群发消息
  4. 信息技术用计算机画画教学设计,小学四年级信息技术用计算机画画教学设计
  5. 基于深度学习的行人重识别研究综述
  6. Java从入门到精通笔记20230106--百钱百鸡引出的疑问
  7. 服务器远程监控管理(四)-统一监控管理
  8. .NET Reflector
  9. 各种软件下载地址收集
  10. three.js数学函数向量夹角弧度转角度