求问本题可以用 st 表解 rmq 吗?
查看原帖
求问本题可以用 st 表解 rmq 吗?
504093
dyc2022楼主2023/9/19 18:00

rt,好像会 mle。

#include<bits/stdc++.h>
using namespace std;
int lg[2000001],n,m;
int f[2000001][21];
main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)scanf("%d",&f[i][0]);
	lg[1]=0;
	for(int i=2;i<=n;i++)lg[i]=lg[i>>1]+1;
	for(int i=1;i<=lg[n];i++)
		for(int j=1;j<=n-(1<<i)+1;j++)
			f[j][i]=min(f[j][i-1],f[j+(1<<(i-1))][i-1]);
	printf("0\n");
	for(int i=2;i<=n;i++)
	{
		int r=i-1;
		int l=max(1,i-m);
		int LOG=lg[r-l+1];
		int ans=min(f[l][LOG],f[r-(1<<LOG)+1][LOG]);
		printf("%d\n",ans);
	}
	return 0;
}
2023/9/19 18:00
加载中...