CE看懵了
  • 板块学术版
  • 楼主盐焗蛋
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/2/23 16:05
  • 上次更新2024/2/23 16:19:06
查看原帖
CE看懵了
709361
盐焗蛋楼主2024/2/23 16:05

刚刚手滑删掉了。

rt,写了一个stable的类:

#include <bits/stdc++.h>
using namespace std;
template <typename Tp,Tp resnum>
class My_stable{
	private:
		vector <vector<Tp> > dp;
		vector <int> lg;
	public:
		My_stable(){}
		void reset(int n,Tp a[]){
			lg.resize(n+5);
			for(int i=2;i<=n;i++) lg[i]=lg[i>>1]+1;
			dp.resize(lg[n]+3);
			for(int i=0;i<dp.size();i++) dp[i].resize(n+5);
			for(int i=0;i<dp.size();i++)
				for(int j=0;j<dp[i].size();j++)
					dp[i][j]=resnum;
			if(resnum<0){
				for(int i=1;i<=n;i++) dp[0][i]=a[i];
				for(int j=1;j<=lg[n];j++)
					for(int i=1;i<=n-(1<<j)+1;i++)
						dp[j][i]=max(dp[j-1][i],dp[j-1][i+(1<<j-1)]);
			}
			else{
				for(int i=1;i<=n;i++) dp[0][i]=a[i];
				for(int j=1;j<=lg[n];j++)
					for(int i=1;i<=n-(1<<j)+1;i++)
						dp[j][i]=min(dp[j-1][i],dp[j-1][i+(1<<j-1)]);
			}
		}
		Tp query(int l,int r){
			int k=lg[r-l+1];
			if(resnum<0) return max(dp[k][l],dp[k][r-(1<<k)+1]);
			else return min(dp[k][l],dp[k][r-(1<<k)+1]);
		}
};
My_stable <int,-114514> st;
int main(){
	
}

但是把`My_stable <int,-114514> st;`改成`My_stable <double,-114514.0> st;` 就会神奇CE。

求问。
2024/2/23 16:05
加载中...