UVA - 12108 Extraordinarily Tired Students(特别困的学生)
来源:互联网 发布:数据库中修改表 编辑:程序博客网 时间:2024/06/02 16:42
题目链接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]; } else f[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;}
0 0
- UVa 12108 Extraordinarily Tired Students(特别困的学生)
- UVA - 12108 Extraordinarily Tired Students(特别困的学生)
- UVa 12108 Extraordinarily Tired Students(特别困的学生)
- uva 12108 Extraordinarily Tired Students(特别困的学生)
- 特别困的学生(Extraordinarily Tired Students)
- 4-8 UVA 12108 特别困的学生 Extraordinarily Tired Students
- 算法竞赛入门经典(第2版)习题4-8 特别困的学生 Extraordinarily Tired Students UVa12108
- 算法竞赛入门经典 第二版 习题4-8 特别困的学生 Extraordinarily Tired Students uva12108
- UVA 12108 - Extraordinarily Tired Students
- uva - 12108-Extraordinarily Tired Students
- UVa 12108 - Extraordinarily Tired Students
- UVa 12108 Extraordinarily Tired Students
- UVA-12108 Extraordinarily Tired Students
- uva 12108 Extraordinarily Tired Students
- uva12108 特别困的学生 (Extraordinary Tired Students
- Uva-12108 - Extraordinarily Tired Students-AC
- UVA - 12108 Extraordinarily Tired Students(模拟)
- 12108 - Extraordinarily Tired Students
- 合并数据库同类项
- android paint cap join 理解 图示
- Recover Rotated Sorted Array
- 将本地文件与github远程库关联
- 1024. Palindromic Number (25)
- UVA - 12108 Extraordinarily Tired Students(特别困的学生)
- Spring MVC中静态资源映射配置
- 欢迎使用CSDN-markdown编辑器
- Roman to Integer
- servlet修改代码默认模板
- 【C#】构造方法
- iOS中的数据持久化方式
- 线性代数总结与备忘
- Git笔记分享-crazychao