一:题目

课堂上有n个学生(n<=),每个学生上课都会出现一个“清醒-睡眠”周期,其中第i个学生学习Ai分钟后睡眠Bi分钟,依次重复。其中在从清醒到睡眠时有一个条件:只有到全班睡眠人数大于清醒人数时,这个学生才敢睡觉。
题目使用(A,B,C)来描述一个学生的信息,A是该学生的清醒时间,B是该学生的睡眠时间,C是该学生的初始状态值(即在初始时是这个周期的第几分钟)
问经过多久,所有人都清醒,当然也可能不存在这个时间,就输出-.

(一)案例详解

       学生人数
    清醒2分钟 睡眠4分钟 初始状态是在周期第1分钟
    清醒1分钟 睡眠5分钟 初始状态是在周期第2分钟
    清醒1分钟 睡眠4分钟 初始状态是在周期第3分钟

(一)样例输入

3       学生人数
2 4 1    清醒2分钟 睡眠4分钟 初始状态是在周期第1分钟
1 5 2    清醒1分钟 睡眠5分钟 初始状态是在周期第2分钟
1 4 3    清醒1分钟 睡眠4分钟 初始状态是在周期第3分钟

(二)样例输出

Case :
Case : -

二:代码实现

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string> #define CLASSTIME 1000000 //设置课程时间最大 int sNum; //学生人数1-10
int a[], b[], c[]; //记录各个学生的初始信息

获取学生信息

int getStuInfo()
{
scanf("%d", &sNum);
if (!sNum)
return ;
getchar(); for (int i = ; i <= sNum; i++)
{
scanf("%d %d %d", &a[i], &b[i], &c[i]);
getchar();
} return ;
}

获取全部学生清醒的时刻(真正开始上课的时间)

int getRealStuTime()
{
int count;
for (int i = ; i < CLASSTIME;i++)
{
count = ;
for (int j = ; j <= sNum; j++) //先获取睡觉人数
if (c[j] > a[j]) //在睡觉
count++;
if (count == ) //全部在学习
return i;
for (int j = ; j <= sNum; j++) //更新状态
{
if (c[j] == a[j] + b[j] || (c[j] == a[j] && count < sNum - count)) //一个周期 或者 如果睡觉人数少于学习人数,则不敢睡觉,开始重新学习
c[j] = ;
c[j]++; //更新每个学生的状态
}
}
return -;
}

主函数

void main()
{
int n = ;
FILE* fp = freopen("data8.in", "r", stdin);
freopen("data8.out", "w", stdout); while (getStuInfo())
printf("Case %d: %d\n", n++, getRealStuTime()); freopen("CON", "r", stdin);
freopen("CON", "w", stdout);
}

算法习题---4-8特别困的学生(UVa12108)的更多相关文章

  1. 特别困的学生 UVa12108(模拟题)

    一.题目 课堂上有n个学生(n<=10).每个学生都有一个“睡眠-清醒”周期,其中第i个学生醒Ai分钟后睡Bi分钟,然后重复(1<=Ai,Bi<=5),初始第i个同学处于他的周期的C ...

  2. UVa 12108 特别困的学生

    https://vjudge.net/problem/UVA-12108 题意:给出n个学生的“清醒—睡眠”周期和初始时间点,每个学生在睡眠时需要判断全班睡觉人数是否严格大于清醒人数,否则在坚持一个清 ...

  3. 【算法习题】数组中任意2个(3个)数的和为sum的组合

    题1.给定一个int数组,一个数sum,求数组中和为sum的任意2个数的组合 @Test public void test_find2() { int[] arr = { -1, 0, 2, 3, 4 ...

  4. 算法习题---5-4交换学生(UVa10763)

    一:题目 有一组学生,他们手中分别有自己学校和想要去的目标学校(A,B).为了成功的交换学生,必须保证这一组学生中必须每两个人之间满足 s1 (A,B) 和 s2 (B,A).即两者原来和目标学校相对 ...

  5. July 算法习题 - 字符串4(全排列和全组合)

    https://segmentfault.com/a/1190000002710424 思想:当前层各节点首元素不同,则各节点的剩余元素也不同:下一层节点交换范围为首元素以外的元素 全排列算法: vo ...

  6. 【算法笔记】B1038 统计同成绩学生

    1038 统计同成绩学生 (20 分) 本题要求读入 N 名学生的成绩,将获得某一给定分数的学生人数输出. 输入格式: 输入在第 1 行给出不超过 10​5​​ 的正整数 N,即学生总人数.随后一行给 ...

  7. 算法习题---4-9数据挖掘(Uva1591)

    一:题目 这是最懵逼的一道题,什么鬼......... [刷题]算法竞赛入门经典(第2版) 4-9/UVa1591 - Data Mining(详细题目看这个吧,不想多说) 二:代码实现 #defin ...

  8. tarjan算法 习题

    dfs树与tarjan算法 标签(空格分隔): 517coding problem solution dfs树 tarjan Task 1 给出一幅无向图\(G\),在其中给出一个dfs树\(T\), ...

  9. 【算法习题】正整数数组中和为sum的任意个数的组合数

    1.递归实现(参考:https://blog.csdn.net/hit_lk/article/details/53967627) public class Test { @org.junit.Test ...

随机推荐

  1. 四.Protobuf3 缺省值

    解析消息时,如果编码消息不包含特定的单数元素,则解析对象中的相应字段将设置为该字段的默认值.这些默认值是特定于类型的: 对于字符串,默认值为空字符串. 对于字节,默认值为空字节. 对于布尔,默认值为f ...

  2. 域渗透:LSA Protection

    简介:微软在 2014 年 3 月 12 日添加了 LSA 保护策略,用来防止对进程 lsass.exe 的代码注入,这样一来就无法使用 mimikatz 对 lsass.exe 进行注入,相关操作也 ...

  3. LightOJ - 1170 - Counting Perfect BST(卡特兰数)

    链接: https://vjudge.net/problem/LightOJ-1170 题意: BST is the acronym for Binary Search Tree. A BST is ...

  4. 编程判断输入的字符是否为‘y’或‘Y’,若是,则输出‘yes’,否则输出‘no’

    #include<stdio.h>void main(){ char ch; ch=getchar(); ch == 'y' || ch == 'Y' ? printf("yes ...

  5. laravel-nestedset:多级无限分类正确姿势

    laravel-nestedset:多级无限分类正确姿势   laravel-nestedset是一个关系型数据库遍历树的larvel4-5的插件包 目录: Nested Sets Model简介 安 ...

  6. 【Redis】Linux下Redis的安装

    Redis服务安装 主要有两种方式:apt安装和编译安装. 我采用的是apt安装,系统是ubuntu18.04,Redis version 5:4.0.9-1 在 Ubuntu 系统安装 Redi 可 ...

  7. myaliyun ECS 启动内外穿透工具shell脚本

    #!/bin/bash tbp=/usr/local/ngrok cmd=$1 if [[ -z $cmd ]];then echo "err!usage{sh $0 1|0 to star ...

  8. 洛谷 P4058 [Code+#1]木材 题解

    P4058 [Code+#1]木材 题目描述 有 \(n\) 棵树,初始时每棵树的高度为 \(H_i\),第 \(i\) 棵树每月都会长高 \(A_i\)​.现在有个木料长度总量为 $ S$ 的订单, ...

  9. 《挑战30天C++入门极限》图文例解C++类的多重继承与虚拟继承

        图文例解C++类的多重继承与虚拟继承 在过去的学习中,我们始终接触的单个类的继承,但是在现实生活中,一些新事物往往会拥有两个或者两个以上事物的属性,为了解决这个问题,C++引入了多重继承的概念 ...

  10. 代码还原,IDA中使用的宏

    在IDA7.0中的定义文件拷贝的. 如果想使用,直接去IDA的plugins插件目录下.包含它的 **defs.h"" 如下: /* This file contains defi ...