0分线段树 全部RE
  • 板块P1531 I Hate It
  • 楼主roy2009
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/7/16 21:52
  • 上次更新2023/11/3 09:26:48
查看原帖
0分线段树 全部RE
235262
roy2009楼主2023/7/16 21:52

数组开的够大,还是RE

#include <bits/stdc++.h>
#define ls k<<1
#define rs k<<1|1
#define mid (l+r>>1)
using namespace std;
const int N=2e7+10;
int n,m,tr[N<<2];
void build(int k,int l,int r){
	if(l==r) {
		scanf("%d",&tr[k]);
		return;
	}
	build(ls,1,mid);
	build(rs,mid+1,r);
	tr[k]=max(tr[ls],tr[rs]);
}
int query(int k,int l,int r,int x,int y){
	if(x>r||y<l) return 0;
	if(x<=l&&y>=r) return tr[k];
	return max(query(ls,l,mid,x,y),query(rs,mid+1,r,x,y)); 
}
void update(int k,int l,int r,int x,int v){
	if(x<l||x>r) return; 
	if(l==r) {tr[k]=max(tr[k],v);return;}
	update(ls,l,mid,x,v);
	update(rs,mid+1,r,x,v);
	tr[k]=max(tr[ls],tr[rs]);
}
int main(){
	scanf("%d%d",&n,&m);
	build(1,1,n);
	while(m--){
		char op[2];
		scanf("%s",op);
		int a,b;
		scanf("%d%d",&a,&b);
		if(op[0]=='Q') printf("%d\n",query(1,1,n,a,b));
		else update(1,1,n,a,b); 
	}
	return 0;
}

提交记录

2023/7/16 21:52
加载中...