【链接】 我是链接,点我呀:)

【题意】

【题解】

一个单位时间、一个单位时间地模拟就好。
然后对于每个人。
记录它所处的周期下标idx
每个单位时间都会让每个人的idx++
注意从醒着到睡着的分界线的处理就好。

可以多循环几次。。超过上限认为无解

(其他题解也提供了一种方法,就是如果状态和初始的情况相同的话。就无解了即形成了一个环。

(可能如果无解一定会形成环?

【代码】

#include <bits/stdc++.h>
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--) using namespace std; const int N = 10; int n;
int a[N+10][N+10];
int cur[N+10],tot[N+10]; int main()
{
//freopen("D:\\rush.txt","r",stdin);
ios::sync_with_stdio(0),cin.tie(0);
int kase = 0;
while (cin >> n){
if (n==0) break;
rep1(i,1,n){
int x,y;
cin >> x >> y >> cur[i];cur[i]--;
rep1(j,1,x) a[i][j-1] = 1;
rep1(j,x+1,x+y) a[i][j-1] = 2;
tot[i] = x+y;
}
cout<<"Case "<<++kase<<": ";
rep1(kk,1,10000){
int sleep = 0,wake = 0;
rep1(i,1,n){
if (a[i][cur[i]]==1) wake++;else sleep++;
}
if (sleep==0){
cout<<kk<<endl;
break;
}
rep1(i,1,n){
if (a[i][cur[i]]==1 && a[i][(cur[i]+1)%tot[i]]==2){
if (sleep>wake){
cur[i] = (cur[i]+1)%tot[i];
}else{
cur[i] = 0;
}
}else{
cur[i] = (cur[i]+1)%tot[i];
}
} }
int sleep = 0;
rep1(i,1,n)
if (a[i][cur[i]]==2)
sleep++;
if (sleep>0) cout<<-1<<endl;
}
return 0;
}

【习题 4-8 UVA - 12108】Extraordinarily Tired Students的更多相关文章

  1. 【模拟】UVa 12108 - Extraordinarily Tired Students

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

  2. UVA 12108 Extraordinarily Tired Students

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

  3. uva 12108 Extraordinarily Tired Students (UVA - 12108)

    算法完全转载...原博客(https://blog.csdn.net/u014800748/article/details/38407087) 题目简单叙述 题目就是一堆学生他们有清醒的时候和昏迷的时 ...

  4. [刷题]算法竞赛入门经典(第2版) 4-8/UVa12108 - Extraordinarily Tired Students

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 代码:(Accepted,0 ms) //UVa12108 - Extraordinarily Tired Stude ...

  5. Extraordinarily Tired Students UVA - 12108

    不知道叫什么,好像是模拟的方法,看懂了题就好办(英语硬伤←_←) 题意大概是当一个同学想睡觉的时候判断周围睡觉的人数,不睡的人数大于等于睡觉的话就死撑着,否则就睡觉. 一开始没有什么思路,就直接用了个 ...

  6. UVa 12108 特别困的学生

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

  7. ACM训练计划建议(写给本校acmer,欢迎围观和指正)

    ACM训练计划建议 From:freecode#  Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...

  8. ACM训练计划建议(转)

    ACM训练计划建议 From:freecode#  Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...

  9. 动态规划 Dynamic Programming 学习笔记

    文章以 CC-BY-SA 方式共享,此说明高于本站内其他说明. 本文尚未完工,但内容足够丰富,故提前发布. 内容包含大量 \(\LaTeX\) 公式,渲染可能需要一些时间,请耐心等待渲染(约 5s). ...

随机推荐

  1. 项目记录23--unity-tolua框架MediatorManager

    我还存在!.!!! ! ! 这个类是管理全部模块,没什么好说就是个单例,之后还须要UIManager,SceneManager,DataManager... .慢慢来.不是还要上班做死的嘛,坑爹. M ...

  2. luogu3155 [CQOI2009]叶子的染色

    题目大意 给一棵m个结点的无根树,你可以选择一个度数大于1的结点作为根,然后给一些结点(根.内部结点和叶子均可)着以黑色或白色.你的着色方案应该保证根结点到每个叶子的简单路径上都至少包含一个有色结点( ...

  3. Spring+Mybatis之注册功能demo

    这次先注册功能的是基于登录之后,所以很多配置,实体类等就不再赘述了. 首先也不是直接在地址栏输入一个网页就可以到注册页面的.而是需要通过后台发送一个请求从而跳转到注册页面 先写注册页面,body部分 ...

  4. C# 如何调用EventLog

    工作原理: 1.在没有指定logname,仅仅指定了source的时候. 1.1 source存在 在写eventlog的时候,首先去找source,如果找到的话,就往这个source所在的log里面 ...

  5. 循环遍历Java字符串字符的规范方法——类似python for ch in string

    比如我将string作为CNN 文本处理输入: float [] input = new float[maxLength]; // 1 sentence by maxLenWords // int[] ...

  6. 【POJ 3740】 Easy Finding

    [题目链接] http://poj.org/problem?id=3740 [算法] Dancing Links算法解精确覆盖问题 详见这篇文章 : https://www.cnblogs.com/g ...

  7. Pie(二分)

    http://poj.org/problem?id=3122 题意:将n个圆柱体的不同口味的pie分给m个人,要求每个人分得的pie必须体积相同,且来自于一块pie(即:只分得一种口味的pie),求最 ...

  8. ul和li里面的list-style

    对ul   list-type  只是设置ul的样式对li    list-type 是对li的综合样式设定  语法是 li-style:list-style-type/list-style-imag ...

  9. ROS-TF-Time

    前言:如何在特定时间进行转换.让第二只乌龟去第一只乌龟在5秒前的地方. 参考自:http://wiki.ros.org/tf/Tutorials/Time%20travel%20with%20tf%2 ...

  10. ACM_螺旋填数

    螺旋填数 Time Limit: 2000/1000ms (Java/Others) Problem Description: 一天,小明在研究蜗牛的壳时,对其螺旋状的花纹感到十分有趣.于是他回到了家 ...