UVa 12108 HDU 2932 Extraordinarily Tired Students [Ad Hoc]
2016-03-13 21:32
411 查看
这份代码在UVa上通过不了
醒 a 分钟,睡 b 分钟。
但在将要睡的那一分钟,即第a分钟,他会审视一下全班同学。
如果,醒着的人比睡着的人多,那么,他就不睡了,从头还是那个周期,否则,就睡,睡了再醒。
然后,他们的初始状态是c,即第1分钟,将是他们周期的第C分钟。
问题是,那一分钟,他们都醒着,不睡,这个就是ans
然后再用个a数组来记录每个人的指针,
接下来就是模拟的过程了
当然了,如果找不到怎么办?
我也不知道怎么办。。。依照队友的建议给ans设置一个最大值,如果这么久都找不到,那就没有。
当然了,这肯定是不严谨的,如果那天我能找到更好的算法,那就再改吧
Description
一个班,有学生,这些学生,要么睡觉,要么醒着,他们遵循一个周期。醒 a 分钟,睡 b 分钟。
但在将要睡的那一分钟,即第a分钟,他会审视一下全班同学。
如果,醒着的人比睡着的人多,那么,他就不睡了,从头还是那个周期,否则,就睡,睡了再醒。
然后,他们的初始状态是c,即第1分钟,将是他们周期的第C分钟。
问题是,那一分钟,他们都醒着,不睡,这个就是ans
Algorithm
先对每一个人开一个bool 数组来表示他们的周期,即代码里面的b数组然后再用个a数组来记录每个人的指针,
接下来就是模拟的过程了
当然了,如果找不到怎么办?
我也不知道怎么办。。。依照队友的建议给ans设置一个最大值,如果这么久都找不到,那就没有。
当然了,这肯定是不严谨的,如果那天我能找到更好的算法,那就再改吧
Hint
输出的case 1, case 2 看清楚Code
#include <cstring> #include <iostream> using namespace std; const int maxn = 10; const int maxl = 20; const int maxans = 1e6; int n; int a[maxn]; // 指针 bool b[maxn][maxl] = {false}; int c[maxn]; // 记录周期 int e[maxn]; // 复制a void solve() { memset(a, 0, sizeof(a)); memset(b, 0, sizeof(b)); memset(c, 0, sizeof(c)); memset(e, 0, sizeof(e)); for (int i = 0; i < n; i++) { int aa, bb, cc; cin >> aa >> bb >> cc; for (int j = 0; j < aa; j++) b[i][j] = true; a[i] = cc - 1; c[i] = aa + bb; } int ans; for (ans = 1; ans < maxans; ans++) { // 检验是否全部都醒着 bool flag = true; for (int i = 0; i < n; i++) if (!b[i][a[i]]) { flag = false; break; } if (flag) break; for (int i = 0; i < n; i++) e[i] = a[i]; for (int i = 0; i < n; i++) { if (b[i][a[i]] && !b[i][a[i]+1]) { int t = 0; for (int j = 0; j < n; j++) if (b[j][a[j]]) t++; if (t > n / 2) e[i] = 0; else e[i] = (e[i] + 1) % c[i]; }else e[i] = (e[i] + 1) % c[i]; } for (int i = 0; i < n; i++) a[i] = e[i]; } if (ans == maxans) cout << "-1" << endl; else cout << ans << endl; } int main() { for (int i = 1; ;i++) { cin >> n; if (n == 0) break; cout << "Case " << i << ": "; solve(); } }
相关文章推荐
- c++第一次上机报告
- form 中Enctype=multipart/form-data 的作用
- 在go语言中优雅退出goroutines
- 删除SharePoint Alternate Access Mapping URL的解决方案
- hibernate-JPA,struts2,spring三大框架整合的步骤
- CvMat,Mat和IplImage之间的转化和拷贝
- 自定义View
- AJAX实现跨域的三种种方法(代理,JSONP,XHR2)
- 织梦dedecms5.7后台进去就卡死解决方法
- Python设计模式(4)-装饰模式
- java中在linux下利用jstack检测死锁
- MFC 数据库ODBC
- 《leetCode》:Basic Calculator II
- 钻石型继承模型的内存分布
- 小技巧、小经验(3)
- javaServlet JDBCUtil
- 第一个spring mvc示例
- Java之矩阵相乘(A=A*B)
- python第三方库安装
- 图片轮播