一个 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")
查看25道真题和解析
