我校是神校,作业竟然选自POJ,难道不知道“珍爱生命 勿刷POJ”么?

所有注明模板题的我都十分傲娇地没有打,于是只打了6道题(其实模板题以前应该打过一部分但懒得找)(不过感觉我模板还是不够溜要找个时间刷一发)。

没注明模板题的都是傻逼题,其实也是模板题。

题目大致按照傻逼程度从大到小排序。

 

POJ 3264 Balanced Lineup 

题意:n个数,m个询问,每次问max[l,r]-min[l,r]。

题解:这道题竟然没标注模板题真是惊讶...

 1 #include<cstdio>
 2 #include<algorithm>
 3 using namespace std;
 4 const int maxn=5e4+5;
 5 
 6 int g[maxn][16],h[maxn][16];
 7 int n,m;
 8 
 9 void get(){
10     for(int j=1;(1<<j)<=n;j++)
11         for(int i=1;i+(1<<j)-1<=n;i++)
12             g[i][j]=min(g[i][j-1],g[i+(1<<(j-1))][j-1]),
13             h[i][j]=max(h[i][j-1],h[i+(1<<(j-1))][j-1]);
14 }
15 
16 int ask(int l,int r){
17     int k=0;
18     while(1<<(k+1)<=r-l+1) k++;
19     int Min=min(g[l][k],g[r-(1<<k)+1][k]);
20     int Max=max(h[l][k],h[r-(1<<k)+1][k]);
21     return Max-Min;
22 }
23 
24 int main(){
25     scanf("%d%d",&n,&m);
26     for(int i=1;i<=n;i++){
27         scanf("%d",&h[i][0]);
28         g[i][0]=h[i][0];
29     }
30     get();
31     
32     int l,r;
33     for(int i=1;i<=m;i++){
34         scanf("%d%d",&l,&r);
35         printf("%d\n",ask(l,r));
36     }
37     return 0;
38 }
View Code

相关文章: