码迷,mamicode.com
首页 > 其他好文 > 详细

【HDOJ】1406 Ferry Loading III

时间:2014-11-28 06:15:12      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   sp   for   on   div   

模拟,注意需要比较队头与当前时间的大小关系。

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <cstdlib>
 4 
 5 #define MAXN 10005
 6 #define INF 0xffffff
 7 
 8 typedef struct {
 9     int i, t;
10 } node_t;
11 
12 
13 node_t Q[2][MAXN];
14 int buf[MAXN];
15 int rear[2], front[2];
16 
17 int main() {
18     int case_n;
19     int n, t, m;
20     int i, j, k, a;
21     int d;
22     char s[7];
23 
24 #ifndef ONLINE_JUDGE
25     freopen("data.in", "r", stdin);
26     freopen("data.out", "w", stdout);
27 #endif
28 
29     scanf("%d", &case_n);
30     for (a=0; a<case_n; ++a) {
31         scanf("%d %d %d", &n, &t, &m);
32         rear[0] = rear[1] = 0;
33         front[0] = front[1] = 0;
34         for (i=1; i<=m; ++i) {
35             scanf("%d %s", &k, s);
36             if (s[0] == l)
37                 j = 0;
38             else
39                 j = 1;
40             Q[j][rear[j]].i = i;
41             Q[j][rear[j]].t = k;
42             rear[j]++;
43         }
44         Q[0][rear[0]].t = INF;
45         Q[1][rear[1]].t = INF;
46         d = 0;
47         int ans = 0;
48         while (front[0]<rear[0] || front[1]<rear[1]) {
49             if (Q[d][front[d]].t>ans && Q[!d][front[!d]].t<=ans) {
50                 ans += t;
51                 d = !d;
52             } else if ((Q[d][front[d]].t>Q[!d][front[!d]].t || front[d]>=rear[d]) && Q[!d][front[!d]].t>ans) {
53                 ans = Q[!d][front[!d]].t + t;
54                 d = !d;
55             }
56             if (ans < Q[d][front[d]].t)
57                 ans = Q[d][front[d]].t;
58             j = 0;
59             i = front[d];
60             while (j<n && i<rear[d] && Q[d][i].t<=ans) {
61                 buf[Q[d][i].i] = ans + t;
62                 ++j;
63                 ++i;
64             }
65             ans += t;
66             front[d] = i;
67             d = !d;
68         }
69         if (a)
70             printf("\n");
71         for (i=1; i<=m; ++i)
72             printf("%d\n", buf[i]);
73     }
74 
75     return 0;
76 }

 

【HDOJ】1406 Ferry Loading III

标签:style   blog   io   ar   color   sp   for   on   div   

原文地址:http://www.cnblogs.com/bombe1013/p/4127601.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!