社区讨论
听取WA声一片,求助!!!
P2880[USACO07JAN] Balanced Lineup G参与者 2已保存回复 10
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 10 条
- 当前快照
- 1 份
- 快照标识符
- @m4grhuvj
- 此快照首次捕获于
- 2024/12/09 16:19 去年
- 此快照最后确认于
- 2025/11/04 13:05 4 个月前
用的树状数组QAQ
CPP#include<iostream>
using namespace std;
int n,q,a,b,lis[114514],trem[114514],tren[114514];
inline int lbt(int num){return num&(-num);}
void updt(int id,int num){
while(id<=n){
trem[id]=num;tren[id]=num;
for(int i=1;i<lbt(id);i<<=1){
if(trem[id]<trem[id-i]){trem[id]=trem[id-i];}
if(tren[id]>tren[id-i]){tren[id]=tren[id-i];}
}
id+=lbt(id);
}
}
void qjc(int l,int r){
int ma=-1,mi=114514;
while(l<=r){
if(ma<lis[r]){ma=lis[r];}
if(mi>lis[r]){mi=lis[r];}
r--;
while(r-l>=lbt(r)){
if(ma<trem[r]){ma=trem[r];}
if(mi>tren[r]){mi=tren[r];}
r-=lbt(r);
}
}
printf("%d\n",ma-mi);
}
int main(){
scanf("%d %d",&n,&q);
for(int i=1;i<=n;i++){
scanf("%d",&lis[i]);
updt(i,lis[i]);
}
while(q--){
scanf("%d %d",&a,&b);
if(b<a){a+=b;b=a-b;a-=b;}
qjc(a,b);
}
return/*结束*/0;
}
回复
共 10 条回复,欢迎继续交流。
正在加载回复...