bzoj1636
来源:互联网 发布:手机怎么修改mac地址 编辑:程序博客网 时间:2024/05/29 02:32
去吧线段树!
然而被卡了。。加了读入输出优化也过不了。。后来发现线段树传递的参数少一些的话速度会飞起来~~,以后注意一下,能用空间存储尽量不要传参。。
#include<cstdio>#include<algorithm>#include<cstring>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fd(i,a,b) for(int i=a;i>=b;i--)using namespace std;int n,q;const int N=5e5+5;struct node{ int l,r,mx,mn;}t[200005];int a[N];int read() { int ret=0,flag=1; char ch=getchar(); while (ch<'0'||ch>'9') { if (ch=='-') flag='-'; ch=getchar(); } while (ch>='0'&&ch<='9') { ret=ret*10+ch-'0'; ch=getchar(); } return ret*flag; } inline void out(int x){ int a[25],wei=0; if(x<0)putchar('-'),x=-x; for(;x;x/=10)a[++wei]=x%10; if(wei==0){puts("0");return;} for(int j=wei;j>=1;--j)putchar('0'+a[j]); putchar('\n');}inline void build(int x,int l,int r){ t[x].l=l,t[x].r=r; if (l==r) { t[x].mn=t[x].mx=a[l]; return; } int mid=(l+r)>>1; build(x*2,l,mid); build(x*2+1,mid+1,r); t[x].mx=max(t[x*2].mx,t[x*2+1].mx); t[x].mn=min(t[x*2].mn,t[x*2+1].mn);}inline int find1(int x,int l1,int r1){ if (t[x].l==l1&&r1==t[x].r)return t[x].mx; int mid=(t[x].l+t[x].r)>>1; if (r1<=mid)return find1(x*2,l1,r1); else if (l1>mid)return find1(x*2+1,l1,r1); else { return max(find1(x*2,l1,mid),find1(x*2+1,mid+1,r1)); }}inline int find2(int x,int l1,int r1){ if (t[x].l==l1&&r1==t[x].r)return t[x].mn; int mid=(t[x].l+t[x].r)>>1; if (r1<=mid)return find2(x*2,l1,r1); else if (l1>mid)return find2(x*2+1,l1,r1); else { return min(find2(x*2,l1,mid),find2(x*2+1,mid+1,r1)); }}int main(){ n=read(),q=read(); fo(i,1,n) a[i]=read(); build(1,1,n); fo(i,1,q) { int x,y; x=read(),y=read(); out(find1(1,x,y)-find2(1,x,y)); } return 0;}
0 0
- bzoj1636
- 【bzoj1636】[Usaco2007 Jan]Balanced Lineup
- bzoj1636: [Usaco2007 Jan]Balanced Lineup
- bzoj1636&bzoj1699【Usaco2007 Jan】Balanced Lineup
- bzoj1636: [Usaco2007 Jan]Balanced Lineup ——by lethalboy
- 我希望进入大学时就能知道的一些事儿
- javaScript深克隆
- setvalueforkey 字典转模型以及注意事项
- Opencv 颜色空间处理(Color space processing)
- 栈(poj 2559)
- bzoj1636
- 为什么要使用数据连接池
- 图论(4)-floyd(最短路径)
- linux c之使用pthread_create创建线程pthread_join等待线程和pthread_exit终止线程总结
- 如何写好测试分析
- deeplearning4j-deeplearning4j-0.7.2 源码编译
- ThreadLocal 小结
- 1. Two Sum
- linux下解压与打包相关指令