首页 > 代码库 > HDU TIANKENG’s rice shop(模拟)
HDU TIANKENG’s rice shop(模拟)
HDU 4884 TIANKENG’s rice shop
题目链接
题意:模拟题,转一篇题意
思路:就模拟即可,注意每次炒完之后就可以接单
代码:
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int N = 1005; int T, n, t, k, m; struct Person { int t, p, num, ans; } p[N]; int main() { scanf("%d", &T); while (T--) { scanf("%d%d%d%d", &n, &t, &k, &m); for (int i = 0; i < m; i++) { int a, b; scanf("%d:%d%d%d", &a, &b, &p[i].p, &p[i].num); p[i].t = a * 60 + b; } int ti = p[0].t, i = 0; while (1) { if (p[i].num == 0) { i++; if (i == m) break; continue; } if (i == m) break; ti = max(ti, p[i].t); int st = ti; int pz = p[i].p; int have = k; while (have < p[i].num) { p[i].num -= have; ti += t; } have -= p[i].num; p[i].num = 0; st = ti; ti += t; p[i].ans = ti; for (int j = i + 1; p[j].t <= st && j < m && have; j++) { if (p[j].p != pz) continue; if (p[j].num == 0) continue; if (p[j].num > have) { p[j].num -= have; have = 0; } else { have -= p[j].num; p[j].ans = ti; p[j].num = 0; } } } for (int i = 0; i < m; i++) printf("%02d:%02d\n", p[i].ans / 60 % 24, p[i].ans % 60); if (T) printf("\n"); } return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。