COCI 2024/2025 #3

打印 上一主题 下一主题

主题 893|帖子 893|积分 2679

T1 P11474 [COCI 2024/2025 #3] 公交车 / Autobus

愤怒,从红升橙足以说明其恶心,考场上调了半小时才过。
这道题的车能够开 \(24\) 小时,而且他能从前一天开到第二天,由于它只能开 \(24\) 小时,所以说发车时间的时候晚于或等于到达时间,说明他开了一天,由于这个,所以我们要处置惩罚 \(3\) 天的情况。
先把全部的时间段存下来,然后分别加 \(1440\) 和 \(2880\) 分钟,暴力匹配,时间复杂度 \(O(600^2) = O(1)\) (不是)。
[code]//# pragma GCC optimize("Ofast")# include # define fr front# define il inline# define fir first# define sec second# define vec vector# define it iterator# define pb push_back# define lb lower_bound# define ub upper_bound# define all(x) x.begin(), x.end()# define mem(a, b) memset(a, b, sizeof(a))# define lc (t[p].l)# define rc (t[p].r)# define ls(x) (x  (i)) & 1)# define set1(x, i) ((x) | (1 > ch;                        m1 += ch - '0';                        cin >> ch >> ch;                        cin >> h2 >> ch >> ch;                        m2 = (ch - '0') * 10;                        cin >> ch;                        m2 += ch - '0';                        int t1 = h1 * 60 + m1;                        int t2 = h2 * 60 + m2;                        if(t1 > t2) tmp1.pb({t1, t2 + 1440});                        else tmp1.pb({t1, t2});                }                                else{                        cin >> h1 >> ch >> ch;                        m1 = (ch - '0') * 10;                        cin >> ch;                        m1 += ch - '0';                        cin >> ch >> ch;                        cin >> h2 >> ch >> ch;                        m2 = (ch - '0') * 10;                        cin >> ch;                        m2 += ch - '0';                        int t1 = h1 * 60 + m1;                        int t2 = h2 * 60 + m2;                        if(t1 > t2) tmp2.pb({t1, t2 + 1440});                        else tmp2.pb({t1, t2});                }        }                each2(x, tmp1){                v1.pb(x);                v1.pb({x.fir + 1440, x.sec + 1440});                v1.pb({x.fir + 2880, x.sec + 2880});        }                each2(x, tmp2){                v2.pb(x);                v2.pb({x.fir + 1440, x.sec + 1440});                v2.pb({x.fir + 2880, x.sec + 2880});        }                each2(a, v1){                each2(b, v2){                        if(a.sec >= b.fir) continue;                        ans = min(ans, b.sec - a.fir + 1);                }        }                if(ans == INF1) cout  x >> y;                                if(deep[y] == deep[x] - 1){                        cout = deep[y] + 1) z = f[z];                        s --;                }                                cout
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

络腮胡菲菲

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表