社区讨论

萌新求助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 条回复,欢迎继续交流。

正在加载回复...