Educational Codeforces Round 112 (Rated for Div. 2) E. Boring Segments

时间:2021-08-06
本文章向大家介绍Educational Codeforces Round 112 (Rated for Div. 2) E. Boring Segments,主要包括Educational Codeforces Round 112 (Rated for Div. 2) E. Boring Segments使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

https://codeforces.com/contest/1555/problem/E

比赛中板子错了 心态炸裂 (比正解多了个二分 对了也是tle
但是 显然可以不用二分 直接双指针瞎搞,按区间长度排序,双指针r++就+1,l++就-1.

const int maxn = 1e6 + 7;

int n, t, m;
struct line {
    int l, r, w;
} ls[maxn];

bool cmp(line l1, line l2) {
    return l1.w < l2.w;
}
int solve_() {
    build(1, 1, m);
    int l = 1, r = 1, ans = 1e7;
    updata(1, ls[1].l, ls[1].r, 1);
    for (; l <= n;) {
        while (query(1, 1, m) == 0 && r < n)
            ++r, updata(1, ls[r].l, ls[r].r, 1);
        if (query(1, 1, m))
            ans = min(ans, ls[r].w - ls[l].w);
        updata(1, ls[l].l, ls[l].r, -1);
        l++;
    }
    return ans;
}

void solve() {
    scanf("%d%d", &n, &m);
    if (n == 1) {
        cout << 0 << endl;
        return;
    }
    for (int i = 1; i <= n; i++) {
        scanf("%d%d%d", &ls[i].l, &ls[i].r, &ls[i].w);
        if (ls[i].l != 1)
            ls[i].l++;
    }
    sort(ls + 1, ls + 1 + n, cmp);
    cout << solve_() << endl;
}
我看见 你

原文地址:https://www.cnblogs.com/maymi/p/15110492.html