RMQ

21 篇文章 0 订阅
2 篇文章 0 订阅
这个利用倍增的思想

可以做到O(nlgn)的预处理以及O(1)的查询~

procedure yuchuli;
var x:longint;
begin
	x:=trunc(ln(n)/ln(2))//常数优化 pow[i]表示2的i次 f[i,0]即a[i]
	for i:=1 to x do
		for j:=1 to n-pow[i]+1 do
			f[i,j]:=max(f[i,j-1],f[i+pow[j-1],j-1]);
end;
function ask(a,b:longint):longint;
begin
	m:=trunc(ln(b-a+1)/ln(2));
	exit(max(f[a,m],f[b-pow[m]+1,m]));
end;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值