您的位置:首页 > 其它

*balanced lineup

2020-02-17 12:18 134 查看
  //  rmq<区间最指查询> , 不过不知道为什么跑起来忒慢... 1 // author : gssn
2 #include <iostream>
3 #include <cmath>
4 using namespace std;
5 int minn[50005][16],maxx[50005][16],f[50010];
6 int n,m;
7 void init()
8 {
9 int len = int(log((double)n) / log(2.0));
10 for(int j=1;j<=len;j++)
11 for(int i=1;i+(1<<(j-1))-1<=n;i++)
12 {
13 maxx[i][j] = max(maxx[i][j-1],maxx[i+(1<<(j-1))][j-1]);
14 minn[i][j] = min(minn[i][j-1],minn[i+(1<<(j-1))][j-1]);
15 }
16 }
17 int query_(int a,int b)
18 {
19 int len = int(log((double)(b-a+1)) / log(2.0)) ;
20 int x = max(maxx[a][len],maxx[b-(1<<len)+1][len]);
21 int y = min(minn[a][len],minn[b-(1<<len)+1][len]);
22 return x - y;
23 }
24 int main()
25 {
26 //int n,m;
27 int a,b;
28 cin>>n>>m;
29 for(int i=1;i<=n;i++)
30 {
31 cin>>f[i];
32 maxx[i][0]=f[i];
33 minn[i][0]=f[i];
34 }
35 init();
36 for(int j=0;j<m;j++)
37 {
38 cin>>a>>b;
39 cout<< query_(a,b) <<endl;
40 }
41 return 0;
42 }

转载于:https://www.cnblogs.com/eth0/archive/2011/05/17/2048769.html

< 20000 div class="more-toolbox">
  • 点赞
  • 收藏
  • 分享
  • 文章举报
aimei3954 发布了0 篇原创文章 · 获赞 0 · 访问量 244 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: