首页 > 代码库 > 【HDOJ】4884 TIANKENG's rice shop
【HDOJ】4884 TIANKENG's rice shop
简单模拟,注意并不是完全按照FIFO的顺序。比如第i个人的id为k,那么就算第i+1人的id不为k,也会检查他后续的排队人是否有id为k的。
1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4 5 #define MAXN 1005 6 7 typedef struct { 8 int tt; 9 int id;10 int num;11 int ans;12 } need_st;13 14 need_st needs[MAXN];15 16 int main() {17 int t, n, k, m, T;18 int i, j, hh, mm, tt, tmp;19 20 scanf("%d", &T);21 while (T--) {22 scanf("%d%d%d%d", &n,&t,&k,&m);23 for (i=0; i<m; ++i) {24 scanf("%d:%d %d %d", &hh, &mm, &needs[i].id, &needs[i].num);25 needs[i].tt = 60*hh+mm;26 }27 tt = 0;28 for (i=0; i<m; ++i) {29 if (needs[i].num == 0)30 continue;31 if (tt < needs[i].tt)32 tt = needs[i].tt;33 tmp = needs[i].num%k;34 tt += needs[i].num/k*t;35 if (tmp > 0) {36 for (j=i+1; j<m&&needs[j].tt<=tt; ++j) {37 if (needs[j].id == needs[i].id) {38 if (needs[j].num+tmp > k) {39 needs[j].num -= (k-tmp);40 break;41 } else {42 tmp += needs[j].num;43 needs[j].num = 0;44 needs[j].ans = tt+t;45 }46 }47 }48 tt += t;49 }50 needs[i].ans = tt;51 }52 for (i=0; i<m; ++i)53 printf("%02d:%02d\n", needs[i].ans/60%24, needs[i].ans%60);54 if (T)55 printf("\n");56 }57 58 return 0;59 }
【HDOJ】4884 TIANKENG's rice shop
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。