您的位置:首页 > 运维架构

3381: [Usaco2004 Open]Cave Cows 2 洞穴里的牛之二

2015-04-10 23:20 344 查看

3381: [Usaco2004 Open]Cave Cows 2 洞穴里的牛之二

Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 21 Solved: 18
[Submit][Status][Discuss]

Description

洞窟里有一道长长的通道.它由N(1≤N≤25000)段道尾相连构成,编号分别为1到N.每个通道有一个阈值,其范围在[1,10^9]依次通过i..j的通道,那奶牛的体重指数就不能超过i..j通道中阈值的最小值.贝茜有Q(1≤Q≤25000)个问题,想请教你由i到j的通道的阈值的最小值.

Input

第1行输入N和Q,接下来N行输入每个通道的阈值,之后Q行每行两个整数,对应问题中的i和j(i<j).

Output

对于每个问题,输出其结果.

Sample Input

10 4

75

30

100

38

50

51

52

20

81

5

1 10

3 5

6 9

8 10

Sample Output

5

38

20

5

HINT

Source

Orange

题解:RMQ模板题。。。感觉自己水水哒

/**************************************************************
Problem: 3381
User: HansBug
Language: Pascal
Result: Accepted
Time:272 ms
Memory:2220 kb
****************************************************************/

var
i,j,k,l,m,n,h:longint;
a:array[0..30000,0..16] of longint;
function min(x,y:longint):longint;
begin
if x<y then min:=x else min:=y;
end;
begin
readln(n,m);
h:=trunc(ln(n)/ln(2)+1);
for i:=1 to n do readln(a[i,0]);
for i:=1 to h do
for j:=1 to n-trunc(exp(ln(2)*i))+1 do
a[j,i]:=min(a[j,i-1],a[j+trunc(exp(ln(2)*(i-1))),i-1]);

for i:=1 to m do
begin
readln(j,k);
l:=trunc(ln(k-j+1)/ln(2));
writeln(min(a[j,l],a[k-trunc(exp(ln(2)*l))+1,l]));
end;
readln;
end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: