我校是神校,作业竟然选自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 }