认为自己代码没问题但是0分的进来看一看
  • 板块P1531 I Hate It
  • 楼主paradoxxd
  • 当前回复6
  • 已保存回复6
  • 发布时间2021/11/4 19:46
  • 上次更新2023/11/4 01:26:46
查看原帖
认为自己代码没问题但是0分的进来看一看
523864
paradoxxd楼主2021/11/4 19:46

别用scanf提取操作...
详细原因我不知道,用cin就过了。
可能是测评机编译器问题,本地编译和hdu上的这道题随便过...

#include<bits/stdc++.h>
using namespace std;
#define puu pushup(rt);
const int maxn=2e5+10;
int A[maxn];
struct{
	int val,l,r;
}st[maxn*4];
void pushup(int rt){
	st[rt].val=max(st[rt*2].val,st[rt*2+1].val);
}
void build(int l,int r,int rt){
	st[rt].l=l;
	st[rt].r=r;
	if(l==r){
		st[rt].val=A[l];
		return;
	}
	int m=l+r>>1;
	build(l,m,rt*2);
	build(m+1,r,rt*2+1);
	puu;
}
void update(int rt,int a,int c){
	int l=st[rt].l;
	int r=st[rt].r;
	if(l==r){
		st[rt].val=max(st[rt].val,c);
		return;
	}
	int m=l+r>>1;
	if(a<=m){
		update(rt*2,a,c);
	}
	else{
		update(rt*2+1,a,c);
	}
	puu;
}
int query(int rt,int s,int e){
	int r=st[rt].r;
	int l=st[rt].l;
	if(s<=l&&r<=e){
		return st[rt].val;
	}
	if(r<s||e<l)
		return 0;
	return max(query(rt*2,s,e),query(rt*2+1,s,e));
}
int main(){
	int n,ma;
	scanf("%d%d",&n,&ma);
	int i,j;
	for(i=1;i<=n;i++)
		scanf("%d",&A[i]);
	build(1,n,1);
	char op;
	int a,b;
	while(ma--){
	    getchar();
		scanf("%c%d%d",&op,&a,&b);//<-------
		if(op=='Q')
			printf("%d\n",query(1,a,b));
		else
			update(1,a,b);
	}
	return 0;
}

别抄哈,这是0分代码:>

2021/11/4 19:46
加载中...