社区讨论
线段树做法只有5分,求助
P1083[NOIP 2012 提高组] 借教室参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mi7ckfc3
- 此快照首次捕获于
- 2025/11/20 19:27 4 个月前
- 此快照最后确认于
- 2025/11/20 19:27 4 个月前
CPP
#include <bits/stdc++.h>
#define re register
#define lson o << 1
#define rson o << 1 | 1
using namespace std;
typedef long long ll;
const int N = 1000005;
int n, m;
ll sum, ans;
inline int read(){
int f = 0, x = 0; char ch;
do {ch = getchar(); f |= ch == '-';} while (!isdigit(ch));
do {x = (x << 3) + (x << 1) + (ch ^ 48); ch = getchar();} while (isdigit(ch));
return f ? -x : x;
}
struct Segment_Tree{
static const int BASE = 1000000;
ll tree[BASE << 2 | 3], lazy[BASE << 2 | 3];
inline void pushup(int o){
tree[o] = tree[lson] + tree[rson];
}
inline void build(int l, int r, int o){
if (l == r){
tree[o] = read();
return;
}
int mid = (l + r) >> 1;
build(l, mid, lson);
build(mid + 1, r, rson);
pushup(o);
}
inline void pushdown(int o, int cl, int cr){
if (lazy[o]){
lazy[lson] += lazy[o];
lazy[rson] += lazy[o];
tree[lson] += cl * lazy[o];
tree[rson] += cr * lazy[o];
lazy[o] = 0;
}
}
inline void modify(int l, int r, int ql, int qr, int val, int o){
if (ql <= l && r <= qr){
tree[o] += (r - l + 1) * val;
lazy[o] += val;
return;
}
int mid = (l + r) >> 1;
pushdown(o, mid - l + 1, r - mid);
if (ql <= mid)modify(l, mid, ql, qr, val, lson);
if (qr > mid)modify(mid + 1, r, ql, qr, val, rson);
pushup(o);
}
inline ll querysum(int l, int r, int ql, int qr, int o){
if (ql <= l && r <= qr){
return tree[o];
}
ll mid = (l + r) >> 1, ans = 0;
pushdown(o, mid - l + 1, r - mid);
if (ql <= mid)ans += querysum(l, mid, ql, qr, lson);
if (qr > mid)ans += querysum(mid + 1, r, ql, qr, rson);
return ans;
}
}T;
int main(){
//freopen("testdata.txt", "r", stdin);
n = read(), m = read();
T.build(1, n, 1);
for (re int i = 1; i <= m; ++i){
int d = read(), s = read(), t = read();
T.modify(1, n, s, t, -d, 1);
//cout << T.tree[1] << ' ';
if (T.tree[1] < 0){
puts("-1");
printf("%d", i);
return 0;
}
}
puts("0");
return 0;
}
请问各位大佬为什么这样只有5分,我看题解里面有个大佬是直接查询根节点还是只有五分。。。求大佬指点,万分感谢
回复
共 1 条回复,欢迎继续交流。
正在加载回复...