求ST表的结构体模板
  • 板块学术版
  • 楼主zbl2012
  • 当前回复4
  • 已保存回复4
  • 发布时间2025/8/3 22:25
  • 上次更新2025/8/4 13:36:59
查看原帖
求ST表的结构体模板
1653348
zbl2012楼主2025/8/3 22:25

rt。我自己的模板写挂了,或者可以帮我调一下

template<typename T,int MAXN=1<<17,class Cmp=greater<T>>
struct ST{;
	T st[MAXN][24];
	int log[MAXN+1];
	Cmp cmp;
	void build(T* a,int n){
		for(int i=2;i<=n;i++)log[i]=log[i>>1]+1;
		for(int i=0;i<n;i++)st[i][0]=a[i+1];
		for(int j=1;j<24;j++)
			for(int i=0;i+(1<<j)<=n;i++)
				st[i][j]=cmp(st[i][j-1],st[i+(1<<(j-1))][j-1]);
	}
	T query(int l,int r){
		l--,r--;
		int k=log[r-l+1];
		return cmp(st[l][k],st[r-(1<<k)+1][k]);
	}
};
2025/8/3 22:25
加载中...