68分求助!!
查看原帖
68分求助!!
895690
gghack_Nythix楼主2023/12/2 14:53

rt,不知道为什么,如果修改时加上

	if(tr[id].r < l || tr[id].l > r){
		return ;
	}

就会WA,否则为RE

#include <bits/stdc++.h>
#define int long long
#define lid (id << 1)
#define rid (id << 1 | 1)
using namespace std;
struct tree{
	int l,r,t,v;
}tr[600005 * 7];
int a[600005];
int c,s,r;
void pd(int id){
	if(tr[id].t){
		tr[lid].t += tr[id].t;
		tr[rid].t += tr[id].t;
		tr[lid].v += tr[id].t;
		tr[rid].v += tr[id].t;
		tr[id].t = 0;
	}
	return ;
}
void bulid(int id,int l,int r){
	tr[id].l = l,tr[id].r = r,tr[id].v = 0;
	if(l == r)return ;
	int mid = (l + r) >> 1;
	bulid(lid,l,mid);
	bulid(rid,mid + 1,r);
	tr[id].v = max(tr[lid].v,tr[rid].v);
}
void ch(int id,int l,int r,int d){
	if(tr[id].r < l || tr[id].l > r){
		tr[id].v += d;
		tr[id].t += d;
		return ;
	}
	if(tr[id].l >= l && tr[id].r <= r){
		tr[id].v += d;
		tr[id].t += d;
		return ;
	}
	int mid = (tr[id].l + tr[id].r) >> 1;
	pd(id);
	if(l <= mid){
		ch(lid,l,r,d);
	}
	if(r > mid){
		ch(rid,l,r,d);
	}
	tr[id].v = max(tr[lid].v,tr[rid].v);
}
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cin >> c >> s >> r;
	bulid(1,1,s);
	while(r--){
		int o,d,n;
		cin >> o >> d >> n;
		if(d - 1 >= o)ch(1,o,d - 1,n);
		if(tr[1].v > s){
			ch(1,o,d - 1,-n);
			cout << "N" << '\n';
		}
		else cout << "T" << '\n';
	}
}

提交记录

2023/12/2 14:53
加载中...