首页 > 代码库 > UVa 12108 特别困的学生
UVa 12108 特别困的学生
https://vjudge.net/problem/UVA-12108
题意:给出n个学生的“清醒—睡眠”周期和初始时间点,每个学生在睡眠时需要判断全班睡觉人数是否严格大于清醒人数,否则在坚持一个清醒周期后再次判断。求出多长时间时全班都是清醒状态。
思路:水题吧。一次次的枚举下去,循环终止的条件就是和初始状态相同。
1 #include<iostream> 2 using namespace std; 3 4 struct Node 5 { 6 int A; 7 int B; 8 int C; 9 }stu[12];10 int ans[12];11 12 int main()13 {14 //freopen("D:\\txt.txt", "r", stdin);15 int n,sleep,kase=0;16 while (cin >> n && n)17 {18 sleep = 0;19 for (int i = 0; i < n; i++)20 {21 cin >> stu[i].A >> stu[i].B >> stu[i].C;22 ans[i] = stu[i].C;23 if (stu[i].C>stu[i].A) sleep++; //统计初始睡着人数24 }25 int count = 0;26 for (int k=1;;k++)27 {28 29 if (sleep == 0)30 {31 cout << "Case " << ++kase << ": " << k << endl;32 break;33 }34 35 if (count == n)36 {37 cout << "Case " << ++kase << ": -1" << endl;38 break;39 }40 41 count = 0;42 int flag = 0;43 44 for (int i = 0; i < n; i++)45 {46 ans[i] = ans[i] % (stu[i].A + stu[i].B)+1;47 if (ans[i] == 1) flag--;48 if (ans[i] == stu[i].A + 1)49 {50 if (sleep <= n - sleep)51 ans[i] = 1;52 else flag++;53 }54 if (ans[i] == stu[i].C) count++;55 }56 sleep += flag;57 }58 }59 return 0;60 }
UVa 12108 特别困的学生
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。