• COGS 1743. 忠诚


    ★   输入文件:faithful.in   输出文件:faithful.out   简单对比
    时间限制:1 s   内存限制:256 MB

    【题目描述】

    老管家是一个聪明能干的人。他为财主工作了整整10年,财主为了让自已账目更加清楚。要求管家每天记k次账,由于管家聪明能干,因而管家总是让财主十分满意。但是由于一些人的挑拨,财主还是对管家产生了怀疑。于是他决定用一种特别的方法来判断管家的忠诚,他把每次的账目按1,2,3…编号,然后不定时的问管家问题,问题是这样的:在a到b号账中最少的一笔是多少?为了让管家没时间作假他总是一次问多个问题。

    【输入格式】

    输入中第一行有两个数m,n表示有m(m<=100000)笔账,n表示有n个问题,n<=100000。

    第二行为m个数,分别是账目的钱数

    后面n行分别是n个问题,每行有2个数字说明开始结束的账目编号

    【输出格式】

    输出文件中为每个问题的答案。具体查看样例。

    【样例输入】

    10 3

    1 2 3 4 5 6 7 8 9 10

    2 7

    3 9

    1 10

    【样例输出】

    2 3 1

    【来源】

    hzoi 2014 寒川

    线段树

    RMQ

    屠龙宝刀点击就送

    #include <cstdio>
    #define Max 100000
    struct NodeTypeTree{
        int l,r,dis;
    };
    struct NodeTypeTree tr[Max*4+1];
    int m,n;
    int min(int a,int b)
    {
        return a>b?b:a;
    }
    inline void tree_up(int k)
    {
        tr[k].dis=min(tr[k<<1].dis,tr[k<<1|1].dis);
    }
    void build(int k,int l,int r)
    {
        tr[k].l=l;tr[k].r=r;
        if(l==r)
        {
            scanf("%d",&tr[k].dis);
            return;
        }
        int mid=(l+r)>>1;
        build(k<<1,l,mid);
        build(k<<1|1,mid+1,r);
        tree_up(k);
    }
    int section_query(int k,int l,int r)
    {
        if(tr[k].l==l&&tr[k].r==r)
        return tr[k].dis;
        int mid=(tr[k].l+tr[k].r)>>1;
        if(l>mid) return section_query(k<<1|1,l,r);
        else if(r<=mid) return section_query(k<<1,l,r);
        else return min(section_query(k<<1,l,mid),section_query(k<<1|1,mid+1,r));
    }
    int main()
    {
        freopen("faithful.in","r",stdin);
        freopen("faithful.out","w",stdout);
        scanf("%d%d",&m,&n);
        build(1,1,m);
        for(int x,y;n--;)
        {
            scanf("%d%d",&x,&y);
            printf("%d ",section_query(1,x,y));
        }
        return 0;
    }
    我们都在命运之湖上荡舟划桨,波浪起伏着而我们无法逃脱孤航。但是假使我们迷失了方向,波浪将指引我们穿越另一天的曙光。
  • 相关阅读:
    哈希表
    跳表
    哈夫曼之谜
    选择树、判定树和查找树

    将gbk字符串转换成utf-8,存储到注册表中后,再次从注册表读取转换成gbk,有问题!!!
    函数内部还是不要使用 strtok()
    没想到: System.out.println(n1 == f1 ? n1 : f1);
    在不同DPI屏幕环境下,让图标显示的尺寸保持不变,使用 LoadImage() 加载图标
    在多线程中显示模态窗口,出现异常现象
  • 原文地址:https://www.cnblogs.com/ruojisun/p/6683732.html
Copyright © 2020-2023  润新知