1 条题解

  • 0
    @ 2025-7-13 9:26:36

    差分数组维护每个位置被修改的次数。

    #include <bits/stdc++.h>
    #define int long long
    using namespace std;
    int n, m;
    int a[100000 + 5];
    int f[100000 + 5]; 
    signed main()
    {
        cin >> n >> m;
        for (int i = 1; i <= n; i++)
            cin >> a[i];
        for (int i = 1; i <= m; i++)
        {
            int l, r;
            cin >> l >> r;
            f[l]++;
            f[r + 1]--;
        }
        int now = 0;
        int ans = 0;
        for (int i = 1; i <= n; i++)
        {
            now += f[i];
            if (now > 0 && a[i] % 2 == 1)
                a[i]++;
            ans += a[i];
        }
        cout << ans;
        return 0;
    }
    
    • 1

    信息

    ID
    14265
    时间
    500ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    112
    已通过
    26
    上传者