UVA - 12108 Extraordinarily Tired Students(特别困的学生)
题目链接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(特别困的学生)相关推荐
- uva 12108 Extraordinarily Tired Students(特别困的学生)
题目大意: 课堂上有n(n<=10)个学生,每个学生都有一个"睡眠-清醒""周期,其中第i个学生清醒Ai分钟后睡Bi分钟,然后重复(1<=Ai,Bi<= ...
- UVA 12108 Extraordinarily Tired Students
思路: ①用结构体stu,属性有清醒时间,睡眠时间,开始处于的时间,状态(醒着还是睡着), 还有计数器. ②二维数组存表格. ③在确定接下来要进入的状态之后,就一次把表格里持续状态的数据都修改掉,比如 ...
- UVa 12108 - Extraordinarily Tired Students(模拟+细节处理)
输入每个学生的睡眠-清醒周期和当前状态,每个学生在睡觉前都会检查班里人的状态,仅当睡眠人数严格大于清醒人数时才会睡觉,否则继续保持清醒状态持续一个周期.求学生全部清醒的时刻,不存在则输出-1. 现在看 ...
- 12108 - Extraordinarily Tired Students(特别困的学生)
题目: When a student is too tired, he can't help sleeping in class, even if his favorite teacher is ri ...
- 12108 - Extraordinarily Tired Students
水题一遍A,不过要注意一下每个同学临睡前的情况,根据样例就能知道,好好研究样例即可. #include<stdio.h> #include<string.h> int a[15 ...
- UVA12108-4.8(ti)-Extraordinarily Tired Students
UVA12108-4.8(ti)-Extraordinarily Tired Students 题目描述: https://uva.onlinejudge.org/index.php?option=c ...
- HDU 2932 Extraordinarily Tired Students (暴力+取模还是很强大的)
题目链接:HDU 2932 Extraordinarily Tired Students 题意:给出N个学生的状态,(a,b,c).a表示a分钟这醒着,b表示b分钟睡着,c表示刚开始是重周期(a+b) ...
- 特别困的学生 (特困生)
特别困的学生 (特困生) <div style="text-align: left;"><pre name="code" class=&quo ...
- 特别困的学生(Extraordinarily Tired Students, ACM/ICPC Xi'an 2006, UVa12108)
#include <cstdio> #include<iostream> using namespace std;struct student {int wake;int sl ...
最新文章
- 软工作业3:词频统计
- C#_Math函数总结
- 【转载】用 Pyinstaller 来打包 + 解决打包结果过大问题
- 自动登录DISCUZ,发帖的代码(部分)
- P2237 [USACO14FEB]自动完成Auto-complete
- 论文浅尝 | 基于深度强化学习的远程监督数据集的降噪
- 随笔 | 写代码时极有可能面临的焦虑
- 问题记录 | 配置ubuntu18.04+cuda9.0+cudnn服务器tensorflow-gpu深度学习环境
- 树莓派---MAC下安装AndroidThings
- 【数据库系统工程师】数据库系统工程师考情分析
- 2022年,想自学java有没有一个详细的框架?
- 节约里程算法java实现
- CMake之add_executable
- java processing_1 Processing入门简介
- 手把手教你用Python画直方图
- 开源云服务器集群管理系统,云树·DMP : 数据库集群管理平台
- 极米发布极光RS Pro、H3、Z8X三款新品
- ImageWarping变形算法研究---反距离加权插值(IDW)
- 扫描二维码 生成二维码
- 工程优化设计与matlab实现 课后答案,清华大学出版社-图书详情-《工程优化设计与MATLAB实现(修订版)》...