bzoj1699 排队【稀疏表】
来源:互联网 发布:聂风入魔知乎 编辑:程序博客网 时间:2024/06/15 07:22
解题思路:
稀疏表模板题。
注意数组要开大点,倍增预处理时容易越界。
#include<bits/stdc++.h>#define ll long longusing namespace std;int getint(){ int i=0,f=1;char c; for(c=getchar();(c<'0'||c>'9')&&c!='-';c=getchar()); if(c=='-')f=-1,c=getchar(); for(;c>='0'&&c<='9';c=getchar())i=(i<<3)+(i<<1)+c-'0'; return i*f;}const int N=100005,LogN=20;int n,m,a[N],mx[N][LogN],mi[N][LogN],Log[N];int main(){ //freopen("lx.in","r",stdin); n=getint(),m=getint(); for(int i=1;i<=n;i++) a[i]=mx[i][0]=mi[i][0]=getint(); Log[1]=0; for(int i=2;i<=n;i++)Log[i]=Log[i>>1]+1; for(int j=1;j<=Log[n];j++) for(int i=1;i<=n;i++) { mx[i][j]=max(mx[i][j-1],mx[i+(1<<j-1)][j-1]); mi[i][j]=min(mi[i][j-1],mi[i+(1<<j-1)][j-1]); } while(m--) { int l=getint(),r=getint(),x=Log[r-l+1]; int t1=max(mx[l][x],mx[r-(1<<x)+1][x]),t2=min(mi[l][x],mi[r-(1<<x)+1][x]); cout<<t1-t2<<'\n'; } return 0;}
阅读全文
0 0
- bzoj1699 排队【稀疏表】
- bzoj1699[Usaco2007 Jan]Balanced Lineup排队
- [BZOJ1699][Usaco2007 Jan]Balanced Lineup排队
- 【bzoj1699】[Usaco2007 Jan]Balanced Lineup排队
- 【bzoj1699】[Usaco2007 Jan][Balanced Lineup排队]
- bzoj1699 [Usaco2007 Jan]Balanced Lineup排队
- [Poj3264][Bzoj1699]Balanced Lineup
- 排队
- 排队
- 排队
- 排队
- 排队
- 排队
- 排队
- 排队
- 排队
- 排队
- 排队
- 算法入门—思维导图
- 设计模式<二>单例模式
- 大数加减乘除?
- Python中列表的增删改查
- 关于MongoDB中的索引查询(查询优化)
- bzoj1699 排队【稀疏表】
- Jcrop+ajaxFileUpload 图片裁切上传 oss(java web)
- 运用Recycleview经常出现的问题及需要注意的地方
- appium混合测试滑动
- TCP多线程
- vs2015中printf中文出现乱码问题
- Anaconda使用总结
- 深度学习中机器学习策略的运用 Projects-1
- 0913C++新手编程