相同的代码,不同的分数,不同的WA
  • 板块P1531 I Hate It
  • 楼主Bobi2014
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/10 20:45
  • 上次更新2024/7/10 20:53:56
查看原帖
相同的代码,不同的分数,不同的WA
1211899
Bobi2014楼主2024/7/10 20:45
#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
struct node{
	int l,r,v;
} tri[N * 4];
int n,m,a[N];
void build(int p,int l,int r){
	tri[p].l = l;tri[p].r = r;
	if(l == r){
		tri[p].v = a[l];
		return;
	}
	int mid = (l + r) / 2;
	build(p * 2,l,mid);
	build(p * 2 + 1,mid + 1,r);
	tri[p].v = max(tri[p * 2].v,tri[p * 2 + 1].v);
}
void update(int p,int x,int value){
	if(tri[p].l == tri[p].r and tri[p].l == x){
		if(tri[p].v < value){
			tri[p].v = value;
		}
		return;
	}
	int mid = (tri[p].l + tri[p].r) / 2;
	if(mid >= x){
		update(p * 2,x,value);
	}
	if(mid < x){
		update(p * 2 + 1,x,value);
	}
	tri[p].v = max(tri[p * 2].v,tri[p * 2 + 1].v);
}
int query(int p,int l,int r){
	if(tri[p].l >= l and tri[p].r <= r){
		return tri[p].v;
	}
	int mid = (tri[p].l + tri[p].r) / 2,ret;
	if(mid >= l){
		ret = query(p * 2,l,r);
	}
	if(mid < r){
		ret = max(ret,query(p * 2 + 1,l,r));
	}
	return ret;
}
int main(){
	cin >> n >> m;
	for(int i = 1;i <= n;i ++){
		cin >> a[i];
	}
	build(1,1,n);
	for(int i = 1;i <= m;i ++){
		char opt;int a,b;
		cin >> opt >> a >> b;
		if(opt == 'Q'){
			cout << query(1,a,b) << endl;
		}else{
			update(1,a,b);
		}
	}
	return 0;
}

2024/7/10 20:45
加载中...