1 条题解

  • 0
    @ 2024-9-10 22:51:15

    解法

    构造原始数列 ai,i[1,n]=ha_{i,i\in[1,n]}=h,对于之后给定的每一个区间 [l,r][l,r],将 ai,i[l+1,r1]1a_{i,i\in[l+1,r-1]}-1,如果该区间已经满足要求,那么就不在减少,最后 aia_i 就是答案。由于数据连续,可以使用差分与前缀和进行优化。

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int N = 1e4 + 10, INF = 0x3f3f3f3f;
    
    int main() {
        map<pair<int, int>, bool> st;
        vector<int> d(N,0);
        int n, l, h, R, a, b;
        cin >> n >> l >> h >> R;
        for (int i = 1; i <= R; i++) {
            cin >> a >> b;
            if (a > b) swap(a, b);
            if (st[make_pair(a, b)]) continue;
            st[make_pair(a, b)] = 1;
            d[a + 1]--, d[b]++;
        }
        for (int i = 1; i <= n; i++) {
            d[i] += d[i - 1];
            cout << d[i] + h << endl;
        }
        return 0;
    }
    
    • 1

    信息

    ID
    1438
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者