WA32玄关求调
查看原帖
WA32玄关求调
532209
pstdjr楼主2025/7/30 10:10

rt,代码:

#include <bits/stdc++.h>
#define int long long
using namespace std;
struct node{
	int tr, tg;
	void tag(int d){
		tr += d;
		tg += d;
	}
} tr[240010];
int c, s, r;
void push_down(int p){
	tr[p*2].tag(tr[p].tg);
	tr[p*2+1].tag(tr[p].tg);
	tr[p].tg = 0;
}
void update(int p, int s, int t, int l, int r, int d){
	if (l <= s && t <= r){
		tr[p].tag(d);
		return;
	}
	int mid=s+t>>1;
	push_down(p);
	if (r <= mid)
		update(p*2, s, mid, l, r, d);
	else if (l > mid)
		update(p*2+1, mid+1, t, l, r, d);
	else{
		update(p*2, s, mid, l, r, d);
		update(p*2+1, mid+1, t, l, r, d);
	}
	tr[p].tr = max(tr[p*2].tr, tr[p*2+1].tr);
}
int query(int p, int s, int t, int l, int r){
	if (l <= s && t <= r)
		return tr[p].tr;
	int mid=s+t>>1;
	if (r <= mid)
		return query(p*2, s, mid, l, r);
	else if (l > mid)
		return query(p*2+1, mid+1, t, l, r);
	else
		return max(query(p*2, s, mid, l, r), query(p*2+1, mid+1, t, l, r));
}
signed main(){
	cin >> c >> s >> r;
	while (r--){
		int o, d, n;
		cin >> o >> d >> n;
		if (query(1, 1, c, o, d-1) <= s - n){
			cout << 'T' << '\n';
			update(1, 1, c, o, d-1, n);
		}
		else
			cout << 'N' << '\n';
	}
}
2025/7/30 10:10
加载中...