首页 > 其他 > 详细

POJ3264RMQ

时间:2016-08-12 18:11:06      阅读:195      评论:0      收藏:0      [点我收藏+]

http://poj.org/problem?id=3264

技术分享

技术分享
 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<algorithm>
 4 #include<iostream>
 5 #include<math.h>
 6 using namespace std;
 7 const int N=50005;
 8 int dpmin[N][20],dpmax[N][20];
 9 int main()
10 {
11     int i,j,n,m;
12     scanf("%d%d",&n,&m);
13     memset(dpmin,0,sizeof(dpmin));
14     memset(dpmax,0,sizeof(dpmax));
15     for(int i=1;i<=n;i++){
16         scanf("%d",&dpmin[i][0]);
17         dpmax[i][0]=dpmin[i][0];
18             }
19             int mm=floor(log(1.0*n)/log(2.0));
20             for(int j=1;j<=mm;j++){
21                 for(int i=1;i<=n;i++){
22                     if((i+(1<<(j-1)))<=n){
23                         dpmin[i][j]=min(dpmin[i][j-1],dpmin[i+(1<<(j-1))][j-1]);
24                         dpmax[i][j]=max(dpmax[i][j-1],dpmax[i+(1<<(j-1))][j-1]);
25                     }
26                 }
27             }
28             int x,y;
29             for(int i=1;i<=m;i++){
30                 scanf("%d%d",&x,&y);
31                 int mid=floor(log(y*1.0-x+1)/log(2.0));
32                 int maxnum=max(dpmax[x][mid],dpmax[y-(1<<mid)+1][mid]);
33                 int minnum=min(dpmin[x][mid],dpmin[y-(1<<mid)+1][mid]);
34                 printf("%d\n",maxnum-minnum);
35             }
36             return 0;
37 }
View Code

 

POJ3264RMQ

原文:http://www.cnblogs.com/shangjindexiaoqingnian/p/5765677.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!