社区讨论
萌新求助dalao们
P1531I Hate It参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mi7xnbjo
- 此快照首次捕获于
- 2025/11/21 05:17 4 个月前
- 此快照最后确认于
- 2025/11/21 05:17 4 个月前
在其它OJ上AC但是在luogu上WA50分
求dalao帮忙查错
CPP#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int maxx = 200000 + 5;
int s[maxx],mx[maxx*4];
void pushup(int rt){
mx[rt] = max(mx[rt*2],mx[rt*2+1]);
}
void bu(int l,int r,int rt){
if(l == r){
mx[rt] = s[l];
return;
}
int mid = (l + r) / 2;
bu(l,mid,rt*2);
bu(mid+1,r,rt*2+1);
pushup(rt);
}
int qu(int ll,int rr,int l,int r,int rt){
if(ll <= l && rr >= r)
return mx[rt];
int mid = (l + r) / 2;
int ret = 0;
if(ll <= mid)
ret = max(ret,qu(ll,rr,l,mid,rt*2));
if(rr > mid)
ret = max(ret,qu(ll,rr,mid+1,r,rt*2+1));
return ret;
}
void update(int ll,int s,int l,int r,int rt){
if(l == r){
mx[rt] = s;
return;
}
int mid = (l + r) / 2;
if(ll <= mid)
update(ll,s,l,mid,rt*2);
else
update(ll,s,mid+1,r,rt*2+1);
pushup(rt);
}
int main(){
int n,m;
while (scanf("%d%d",&n,&m) != EOF){
for(int i = 1; i <= n; i++)
scanf("%d",&s[i]);
bu(1,n,1);
int a,b;
char ch;
while(m--){
scanf(" %c%d%d",&ch,&a,&b);
if(ch == 'Q')
printf("%d\n",qu(a,b,1,n,1));
else
update(a,b,1,n,1);
}
}
return 0;
}
谢谢dalao们
回复
共 2 条回复,欢迎继续交流。
正在加载回复...