一个 O(n^2) 的正解

区间增量与区间小于计数

https://www.nowcoder.com/practice/74481dd14e3b4875a190952f86e6ffab

直接暴力做所有操作即可

实测即使区间全卡满也只跑不到三秒,对于测试用例跑的比自己写的分块还要快

upd: 不到三秒是错的,因为操作二开销要比操作一更大,会超过三秒。不过全操作二仍然不到四秒,还是稳稳通过。

#include <iostream>
using namespace std;

using ll = long long;

int n;
int q;
ll a[100001];

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cin >> n >> q;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
    }
    while (q--) {
        int op, l, r, x;
        cin >> op >> l >> r >> x;
        if (op == 1) {
            for (int i = l; i <= r; i++) {
                a[i] += x;
            }
            continue;
        }
        int res = 0;
        for (int i = l; i <= r; i++) {
            if (a[i] < x) {
                res++;
            }
        }
        cout << res << '\n';
    }
}
// 64 位输出请用 printf("%lld")

全部评论
你这是个啥正解
点赞 回复 分享
发布于 03-24 12:39 陕西
最神的一集
点赞 回复 分享
发布于 03-23 12:10 江苏
暴力能过?
点赞 回复 分享
发布于 03-23 10:10 山东

相关推荐

03-03 23:42
复旦大学 Java
_无论云泥意贯一:把复旦大学放前面,山东大学放后面,并且在两个大学后面标注985(用一些显眼的颜色标注)
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务