zoukankan      html  css  js  c++  java
  • 忠诚

    洛谷P1816

    线段树应用(静态查询最小值)

     1 #include <cstdio>
     2 #include <cstring> 
     3 #include <iostream>
     4 #include <algorithm>
     5 using namespace std;
     6 const int N = 1e5 + 5,INF = 0x7fffffff;
     7 int a[N],minn[N*4],n,m;
     8 inline int read()
     9 {
    10     int x=0,w=1; char c=getchar();
    11     while (c>'9' || c<'0') {if(c=='-') w=-1; c=getchar();}
    12     while (c<='9' && c>='0') {x=(x<<1)+(x<<3)+c-'0'; c=getchar();}
    13     return w*x;
    14 }
    15 void build(int o,int l,int r)
    16 {        
    17     if (l==r) {minn[o]=a[l]; return ;}
    18     int mid= (l+r)>>1;
    19     build(o<<1,l,mid);
    20     build(o<<1|1,mid+1,r);
    21     minn[o]=min(minn[o<<1],minn[o<<1|1]);
    22 }
    23 int query(int o,int l,int r,int ql,int qr)
    24 {
    25     if (ql<=l && qr>=r) return minn[o];
    26     int mid=(l+r)>>1; int minn1=INF,minn2=INF;
    27     if (ql<=mid) minn1=query(o<<1,l,mid,ql,qr);
    28     if (qr>mid) minn2=query(o<<1|1,mid+1,r,ql,qr);
    29     return min(minn1,minn2);
    30 }
    31 int main()
    32 {
    33     n=read(); m=read();
    34     for(int i=1;i<=n;++i)
    35         a[i]=read();
    36     build(1,1,n);
    37     while(m--)
    38     {
    39         int l,r;
    40         l=read(); r=read();
    41         cout<<query(1,1,n,l,r)<<" ";
    42     }
    43     cout<<endl;
    44     return 0;
    45 }

    开始WA*10(拍了好多组数据都没问题),后来发现输出应该是一行,然后就AC了

    心塞

  • 相关阅读:
    Docker02 Docker初识:第一个Docker容器和Docker镜像
    Docker01 CentOS配置Docker
    Jenkins02:Jenkins+maven+svn集成
    Junit01 新建Maven项目
    Junit02 Junit创建及简单实现
    Jenkins01:linux+jenkins+ant+jmeter集成
    Jenkins初识03:构建定时任务
    python 协程
    python之socket 网络编程
    python 面向对象
  • 原文地址:https://www.cnblogs.com/cptbtptpbcptbtptp/p/11615961.html
Copyright © 2011-2022 走看看