万里丛中一点红,这线段树找不出问题啊啊啊!!!
  • 板块P1816 忠诚
  • 楼主larryia
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/8/31 20:14
  • 上次更新2023/11/3 00:09:06
查看原帖
万里丛中一点红,这线段树找不出问题啊啊啊!!!
1042486
larryia楼主2023/8/31 20:14
#include <iostream>
#define lc p << 1
#define rc p << 1 | 1 
#define int long long
using namespace std;
const int N = 100005;
int n, m, w[N], x, y;
int minn[N * 4];

void pushup(int p) {
	minn[p] = min(minn[lc], minn[rc]);
}

void build(int p, int l, int r) {
	minn[p] = w[l];
	if (l == r) {
		return;
	}
	int mid = (l + r) >> 1;
	build(lc, l, mid), build(rc, mid + 1, r);
	pushup(p);
} 

int query(int p, int x, int y, int l, int r) {
	if (x > r || y < l) return 1e9;
	if (x <= l && r <= y) {
		return minn[p];
	}
	int mid = (l + r) >> 1;
	return min(query(lc, x, y, l, mid), query(rc, x, y, mid + 1, r));
	
}

signed main() {
	cin >> m >> n;
	for (int i = 1; i <= m; i++) {
		cin >> w[i];
	}
	build(1, 1, n);
	for (int i = 0; i < n; i++) {
		cin >> x >> y;
		cout << query(1, x, y, 1, n) << ' ';
	}
	return 0;
}
2023/8/31 20:14
加载中...