大佬救救窝
查看原帖
大佬救救窝
462158
Gtortoise楼主2021/10/21 20:38
#include<bits/stdc++.h>
using namespace std;
int n,ans;
const int MAXN=100100;
struct Node{
	int pre;
	int l,r;
}t[MAXN*4+2];
int a[MAXN+3];

void build(int p,int l,int r){
	t[p].l=l,t[p].r=r;
	if(l==r){
		t[p].pre=a[l];
		if(t[p].pre>0)
			ans++;
		return ;
	}	
	int mid=l+r>>1;
	build(p<<1,l,mid);
	build(p<<1|1,mid+1,r);
	t[p].pre=t[p<<1].pre+t[p<<1|1].pre;
	if(t[p].pre>0){
		ans++;
	}
}
int main(){
	std::ios::sync_with_stdio(0);
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	build(1,1,n);
	cout<<ans;
	return 0;
}

线段树不可以咩??

wawawawawa为什么不对吖

2021/10/21 20:38
加载中...