线段树 #1 #10 TLE 求助
  • 板块P1816 忠诚
  • 楼主_O_v_O_
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/5/7 13:56
  • 上次更新2023/10/23 16:26:19
查看原帖
线段树 #1 #10 TLE 求助
782941
_O_v_O_楼主2023/5/7 13:56

rt

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define lid (id<<1)
#define rid (id<<1)+1

int n,m,a[500005];

struct tree{
	int l,r;
	int mn;
}tr[500005];

void build(int id,int l,int r){
	tr[id].l=l;
	tr[id].r=r;
	if(l==r){
		tr[id].mn=a[l];
		return;
	}
	int mid=(l+r)>>1;
	build(lid,l,mid);
	build(rid,mid+1,r);
	tr[id].mn=min(tr[lid].mn,tr[rid].mn);
}

int minn(int id,int l,int r){
	if(tr[id].l==tr[id].r)
		return tr[id].mn;
	int mid=(tr[id].l+tr[id].r)>>1;
	if(r<=mid) return minn(lid,l,r);
	if(l>mid) return minn(rid,l,r);
	return min(minn(lid,l,mid),minn(rid,mid+1,r));
}

signed main(){
	scanf("%lld%lld",&n,&m);
	for(int i=1;i<=n;i++){
		scanf("%lld",&a[i]);
	}
	build(1,1,n);
	for(int i=1;i<=m;i++){
		int x,y;
		cin>>x>>y;
		printf("%lld ",minn(1,x,y));
	}
	return 0;
}
2023/5/7 13:56
加载中...