求助!!!(P1531)
  • 板块灌水区
  • 楼主wangding
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/3/17 20:38
  • 上次更新2024/3/17 22:43:05
查看原帖
求助!!!(P1531)
1113248
wangding楼主2024/3/17 20:38

为什么50分?

#include<bits/stdc++.h>
using namespace std; 
int n,m,a[200001],q,p;
string k;
struct segtree_noet{
	int ved;
}segtree[200001*4];
void gz(int l,int r,int rt){
	if(l==r){
		segtree[rt].ved=a[l];
		return;
	}
	int m=(l+r)/2;
	gz(l,m,rt*2);
	gz(m+1,r,rt*2+1);
	segtree[rt].ved=max(segtree[rt*2].ved,segtree[rt*2+1].ved);
}
void gx(int L,int c,int l,int r,int rt){
	if(l==r){
		segtree[rt].ved=c;
		return;
	} 
	int m=(l+r)/2;
	if(L<=m) gx(L,c,l,m,rt*2);
	else gx(L,c,m+1,r,rt*2+1);
	segtree[rt].ved=max(segtree[rt*2].ved,segtree[rt*2+1].ved);
}
int dow(int L,int R,int l,int r,int rt){
	if(r<=R&&L<=l) return segtree[rt].ved;
	if(L>r||R<l) return 0;
	int m=(l+r)/2,ma=-10000;
	//cout<<dow(L,R,l,m,rt*2)<<" "<<dow(L,R,m+1,r,rt*2+1)<<"\n";
	ma=max(dow(L,R,l,m,rt*2),dow(L,R,m+1,r,rt*2+1));
	return ma;
}
int main(){
	cin>>n>>m; 
	//while(cin>>n>>m){
	for(int i=1;i<=n;i++) cin>>a[i];
	gz(1,n,1);
	for(int i=1;i<=m;i++){
		cin>>k>>q>>p;	
		if(k=="Q") cout<<dow(q,p,1,n,1)<<"\n";
		else gx(q,p,1,n,1);
	}
	//}
	return 0;
}
求帮忙!!
2024/3/17 20:38
加载中...