求助 Div.3 F
  • 板块学术版
  • 楼主幸存者
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/9/10 18:05
  • 上次更新2023/10/27 12:06:37
查看原帖
求助 Div.3 F
549357
幸存者楼主2022/9/10 18:05

rt,复杂度是 O(mk)O(mk) 的做法居然得了 6565 分,让我非常惊讶

代码:

#include <bits/stdc++.h>
#define int long long
using namespace std;
int a[2000010], maxn[2000010];
signed main()
{
    int n, m, v, ans1 = 0, ans2 = 0;
    cin >> n >> m >> v;
    maxn[0] = -1e9;
    for (int i = 1; i <= n; i++)
    {
        cin >> a[i];
        maxn[i] = max(maxn[i - 1] + v, a[i]);
    }
    while (m--)
    {
        int x, k, minn = 1e9;
        cin >> x >> k;
        int y = maxn[x - 1] + v;
        for (int i = x + 1; i < x + k; i++) y = max(y, a[i] - (i - x) * v + 1);
        if (x + k - 1 <= n) ans1 ^= y, ans2 += y;
    }
    cout << ans1 << " " << ans2 << endl;
    return 0;
}
2022/9/10 18:05
加载中...