【tyvj1038】忠诚

来源:互联网 发布:淘宝网店评估 编辑:程序博客网 时间:2024/05/01 03:58

tyvj1038

最基础的线段树问题。。都没有修改
然而第一次写空间开小了,简直愚蠢

#include<cstdio>using namespace std;const int INF=2700000+10;int m, n, minv[INF], a[INF];int x, y, _min;int min(int x, int y) {return x < y ? x : y;}void ctb(int o, int l, int r){    if(l == r){        minv[o] = a[l];    }    else {        int m = l + (r-l)/2;        ctb(o*2, l, m);        ctb(o*2+1, m+1, r);        minv[o] = min(minv[o*2], minv[o*2+1]);    }}void query(int o, int l, int r){    if(x <= l && r <= y){        _min = min(_min, minv[o]);    }    else {        int m = l + (r-l)/2;        if(x <= m) query(o*2, l, m);        if(y > m) query(o*2+1, m+1, r);    }}int main() {    scanf("%d %d", &m, &n);    int i;    for(i = 1; i <= m; i++)        scanf("%d", &a[i]);    ctb(1, 1, m);    while(n--){        scanf("%d %d", &x, &y);        _min=INF;        query(1, 1, m);        printf("%d ", _min);    }    return 0;}

hzwer学长博客

0 0
原创粉丝点击