Timus 1892 Morning in Koltsovo
来源:互联网 发布:广州中名软件 编辑:程序博客网 时间:2024/05/29 11:42
原题:Morning in Koltsovo
题意:给出n台要起飞的飞机及m台要降落的飞机,并给出他们起飞(降落)的时间,其中若一台飞机起飞,那么随后过t1秒后才允许下一台飞机起飞,或者过t2秒后允许下一台飞机降落;若一台飞机降落,那么随后过t3秒后才允许下一台飞机起飞,或过t4秒后允许下一台飞机降落。其中,若同一时间有飞机要起飞、降落,那么降落的飞机优先
解法:直接模拟。注意!其中若飞机 a 能被允许的起飞时间超过了飞机 b 初始的降落时间,哪怕飞机 a 的初始起飞时间比飞机 b 的初始降落时间要早,那么也是飞机 b 优先
#include <iostream>using namespace std;struct time { int h, m, s; void operator=(time& other) { h = other.h; m = other.m; s = other.s; } bool operator<(time& other) { if ((h < other.h) || (h == other.h && m < other.m) || (h == other.h && m == other.m && s < other.s)) return true; return false; } bool operator>(time& other) { if ((h > other.h) || (h == other.h && m > other.m) || (h == other.h && m == other.m && s > other.s)) return true; return false; } bool operator==(time& other) { if (h == other.h && m == other.m && s == other.s) return true; return false; } void operator+=(int second) { s += second; m += s/60; s = s%60; h += m/60; m = m%60; h = h%24; }};time a[200], ans[200];int b[200];int t1, t2, t3, t4, n, m;int main() { cin >> t1 >> t2 >> t3 >> t4; cin >> n; char c; for (int i = 1; i <= n; i++) { cin >> a[i].h; cin >> c; cin >> a[i].m; cin >> c; cin >> a[i].s; b[i] = i; } cin >> m; for (int i = n+1; i <= n+m; i++) { cin >> a[i].h; cin >> c; cin >> a[i].m; cin >> c; cin >> a[i].s; b[i] = i; } for (int i = 1; i <= n; i++) for (int j = i+1; j <= n; j++) if (a[i] > a[j]) { time temp = a[i]; a[i] = a[j]; a[j] = temp; int t = b[i]; b[i] = b[j]; b[j] = t; } for (int i = n+1; i <= n+m; i++) for (int j = i+1; j <= n+m; j++) if (a[i] > a[j]) { time temp = a[i]; a[i] = a[j]; a[j] = temp; int t = b[i]; b[i] = b[j]; b[j] = t; } int x = 1, y = n+1; time t; int state; if (a[x] < a[y]) { t = a[x]; x++; state = 1; } else { t = a[y]; y++; state = 2; } while (1) { if (x > n && y > n+m) break; time temp = t; if (state == 1) temp += t1; else temp += t3; if (x <= n && temp < a[x]) temp = a[x]; if ((x <= n) && (y > n+m || temp < a[y])) { a[x] = temp; x++; t = temp; state = 1; } else { temp = t; if (state == 1) temp += t2; else temp += t4; if (y <= n+m && temp < a[y]) temp = a[y]; a[y] = temp; y++; t = temp; state = 2; } } for (int i = 1; i <= n+m; i++) ans[b[i]] = a[i]; for (int i = 1; i <= n+m; i++) { if (ans[i].h < 10) cout << 0; cout << ans[i].h << ":"; if (ans[i].m < 10) cout << 0; cout << ans[i].m << ":"; if (ans[i].s < 10) cout << 0; cout << ans[i].s << endl; }}
0 0
- Timus 1892 Morning in Koltsovo
- in the morning
- In The Morning
- In the Morning
- in/on the morning
- morning
- morning
- note in Nov. 29th morning
- Timus 1025. Democracy in Danger 题解
- King is back,English study in the morning
- 63. An hour in the morning is worth two in the evening. 一年之计在于晨
- 'Morning DYPro Program Studio-life' Try, Retry for blog in CSDN
- Good Morning!
- Good morning
- Good Morning
- timus 1192. Ball in a Dream URAL 解题报告 平生第一个计算几何+高中物理
- timus 1084. Goat in the Garden URAL 解题报告 计算几何
- timus 1348. Goat in the Garden 2 URAL 点到线段的距离
- 20160630整理到cloudeye攻击的一些姿势
- Android中ListView分页加载数据
- idea常用配置
- RecyclerView--监测View是否可以沿着指定方向滑动
- STC双串口单片机无法烧写下载程序原因,普中开发箱,STC12C5A60S2
- Timus 1892 Morning in Koltsovo
- iOS向上滑动,导航栏颜色逐渐加深
- angularJS $resource与后台restapi的对应关系
- 初识JSP
- java调用MySQL的kettle资源库时的编码问题
- 如何高效的学习Android动画
- 存储网页为离线mht文件
- 存储网页为离线mht文件
- java面试题