TLE to #11#12#13求优化
查看原帖
TLE to #11#12#13求优化
1237792
eman__ruoy楼主2025/7/25 15:07
#include <bits/stdc++.h>
using namespace std;
class ST_{
	
	public:
		void in_(int in[],int size){
            n=size;
			for(int i=1;i<=size;i++){
				st[0][i]=in[i];
			}
			begin();
			return;
		}
		int mx_(int l,int r){
			int k=lg[r-l+1];
            // return k;
			return max(st[k][l],st[k][r-(1<<k)+1]);
		}
	private:
		int st[20][100005],n,ln;
		int lg[100005];
		void begin(){
            // cout<<"begin!"<<endl;
			for(int i=2;i<=n;i++){
				lg[i]=lg[i>>1]+1;
                // cout<<lg[i]<<' ';
			}
			ln=log2(n)+2;
			int u=0,uu=0,uuu;
			for(int i=1;i<ln;i++,u++){
				uu=(1<<u),uuu=n-uu;
				for(int j=0;j<=uuu;j++){
					st[i][j]=max(st[u][j],st[u][j+uu]);
				}
			}
			return;
		}
		
		
};
inline int read()
{
	int x=0,f=1;char ch=getchar();
	while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
	while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
	return x*f;
}
int main(){
	ST_ ak;
	int v[100005];
	int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        v[i]=read();
    }
    ak.in_(v,n);
    for(int i=0;i<m;i++){
        int a,b;
        a=read(),b=read();
        cout<<ak.mx_(a,b)<<endl;
    }
	return 0;
}

微跪自刪QWQ

2025/7/25 15:07
加载中...