社区讨论
用的高精度,越界了求救,数组没越界啊
P1816忠诚参与者 3已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @logrk85x
- 此快照首次捕获于
- 2023/11/02 13:46 2 年前
- 此快照最后确认于
- 2023/11/02 17:22 2 年前
CPP
#include<cstring>
#include<iostream>
#include<algorithm>
#include<climits>
using namespace std;
#define N 200005
#define LL long long
#define lc u<<1 //乘二
#define rc u<<1|1 //乘二+1
int w[N];
struct Tree
{
LL l,r,sum; //线段树 懒标记是0和1
}tr[N*4];
void build(LL u,LL l,LL r) //建树 (父节点,左端点,右端点)
{
tr[u]={l,r,w[l]};
if(l==r) return;
LL m=l+r>>1; //除二
build(lc,l,m);
build(rc,m+1,r);
}
LL query(LL u,LL l,LL r){ //区间查找(输出) (父节点,总左端点,总右端点)
LL max=INT_MAX;
if(l==r) return tr[u].sum;
LL m=tr[u].l+tr[u].r>>1; //除二
if(l<=m) max=min(max,query(lc,l,r));
if(r>m) max=min(max,query(rc,l,r));
return max;
}
int main()
{
int n,m,x,y;
cin>>n>>m;
for(int i=1;i<=n;++i)
{
cin>>w[i];
}
build(1,1,n);
while(m--)
{
cin>>x>>y;
cout<<query(1,x,y)<<' ';
}
return 0;
}
回复
共 5 条回复,欢迎继续交流。
正在加载回复...