求助线段树
  • 板块学术版
  • 楼主0_and_1
  • 当前回复7
  • 已保存回复7
  • 发布时间2024/8/15 20:58
  • 上次更新2024/8/16 01:22:11
查看原帖
求助线段树
996070
0_and_1楼主2024/8/15 20:58

自己写了一个线段树单点查询,但线上自测MLE+RE,本地没问题。

就是为了练习线段树写的单点查询,我当然知道用数组更香……

#include<iostream>
#include<cstdio>
using namespace std;
int n,a[100010],tree[200010],q,k;
void build(int u,int l,int r){
	if(l==r){
		tree[u]=a[l];
		return;
	}
	int mid=(l+r)/2;
	build(u*2,l,mid);
	build(u*2+1,mid+1,r);
	tree[u]=tree[u*2]+tree[u*2+1];
}
int ask(int u,int l,int r,int x){
	if(l==r){
		return tree[u];
	}
	int mid=(l+r)/2;
	if(x<=mid)ask(u*2,l,mid,x);
	else ask(u*2+1,mid+1,r,x);
}
int main(){
	ios::sync_with_stdio(0);
	cin >> n;
	for(int i = 1;i<=n;i++)cin >> a[i];
	build(1,1,n);
	cin >> q;
	while(q--){
		cin >> k;
		cout << ask(1,1,n,k) << endl;
	}
	return 0;
}
2024/8/15 20:58
加载中...