求助
查看原帖
求助
1145247
0120cy楼主2024/7/15 14:49
#include <iostream>
using  namespace std;

int n,m,x,y,lg[100010],st[100010][20];
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()
{
	n=read();
	m=read();
	 lg[1]=0;
	for (int i=2;i<=n;i++) lg[i]=lg[i>>1]+1;
	for (int i=1;i<=n;i++) st[i][0]=read(); 
	for (int j=1;j<=lg[n];j++)
	for (int i=1;i<=n-(1<<j)+1;i++)
	{
		st[i][j]=max(st[i][j-1],st[i+(1<<(j-1))][j-1]); 
	}
	
	for (int i=1;i<=m;i++)
	{
		x=read(),y=read(); int l=lg[y-x+1];
		cout<<max(st[x][l],st[y-(1<<l)+1][l])<<endl;
	}
}

TLE求助,求解析 打了个st表发现TLE了三个测试点 题目建议快读我也用了,不知道要怎么优化

2024/7/15 14:49
加载中...