关于洛谷(违规紫衫)
  • 板块灌水区
  • 楼主Frielen
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/8/5 15:27
  • 上次更新2024/8/5 16:11:49
查看原帖
关于洛谷(违规紫衫)
1125685
Frielen楼主2024/8/5 15:27

洛谷的P1531好难啊!求助:

#include<cstdio>
#define int long long
int n,m,a[200009],tree[200009];
int lowbit(int x){
	return((x)&(-x));
}
int max(int a,int b){
    return a>b?a:b;
}
int query(int l,int r){
	int res=0;
	while(l<=r){
		while(r-l>=lowbit(r)){
			res=max(res,tree[r]);
			r-=lowbit(r);
		}
		res=max(res,a[r]);
		r--;
	}
	return res;
}
signed main(){
//	freopen("Lucy=4b^2.txt","w",stdout);
	scanf("%lld %lld",&n,&m);
	for(int i=1;i<=n;i++){
		scanf("%lld",&a[i]);
		for(int j=i;j<=n;j+=lowbit(j))
    		tree[j]=max(tree[j],a[i]);
	}
//	for(int i=1;i<=n;i++){
//		printf("%lld\n\n",tree[i]);
//	}
	for(int i=1;i<=m;i++){
		char _c;
		int _a,_b;
		scanf(" %c%lld%lld",&_c,&_a,&_b);
		if(_c=='Q') printf("%lld\n",query(_a,_b));
		else{
			a[_a]=max(a[_a],_b);
			for(int j=_b;j<=n;j+=lowbit(j))
				tree[j]=max(tree[j],_b);
		}
	}
	return 0;
}

提交记录

2024/8/5 15:27
加载中...