线段树根本过不了!!!
查看原帖
线段树根本过不了!!!
538427
czy0323楼主2022/8/7 12:54

用线段树只有80分

附上代码

#include<bits/stdc++.h>
using namespace std;
const int MAXN=2e6;
int tree[4*MAXN];
int i,n,m,tl,tr;

inline int read(){
	char ch=getchar();
	int s=0,f=1;
	while( ch<'0' || ch>'9' ){
		if( ch=='-' )
			f=-1;
		ch=getchar();
	}
	while( ch>='0' && ch<='9' ){
		s=s*10+ch-48;
		ch=getchar();
	}
	return s*f;
}

void build(int l,int r,int p){
	if( l==r ){
		tree[p]=read();
		return;
	}
	int mid=(l+r)/2;
	build(l,mid,p*2);
	build(mid+1,r,p*2+1);
	tree[p]=min(tree[p*2],tree[p*2+1]);
}

int query(int nl,int nr,int p){
	if( nl>=tl && nr<=tr )
		return tree[p];
	int ans=1e9,mid=(nl+nr)/2;
	if( mid>=tl )
		ans=min(ans,query(nl,mid,p*2));
	if( mid<tr )
		ans=min(ans,query(mid+1,nr,p*2+1));
	return ans;
}

int main() {
	n=read(),m=read();
	build(1,n,1);
	cout<<0<<endl;
	for(i=2;i<=n;i++){
		if( i<=m )
			tl=1,tr=i-1;
		else
			tl=i-m,tr=i-1;
		cout<<query(1,n,1)<<endl;
	}
	return 0;
}
2022/8/7 12:54
加载中...