• 算法训练 区间K大数


    算法训练 区间k大数查询  
    时间限制:1.0s   内存限制:256.0MB
       
    问题描述

    给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。

    输入格式

    第一行包含一个数n,表示序列长度。

    第二行包含n个正整数,表示给定的序列。

    第三个包含一个正整数m,表示询问个数。

    接下来m行,每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个。序列元素从1开始标号。

    输出格式
    总共输出m行,每行一个数,表示询问的答案。
    样例输入
    5
    1 2 3 4 5
    2
    1 5 2
    2 3 2
    样例输出
    4
    2
    数据规模与约定

    对于30%的数据,n,m<=100;

    对于100%的数据,n,m<=1000;

    保证k<=(r-l+1),序列中的数<=106


    思路:sort

    代码:

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    const int MAXN=1005;
    int ans[MAXN];
    int bns[MAXN];
    int cmp(int a,int b)
    {
        return a>b;
    }
    int main()
    {
        int t;
        int n;
        int l,r,k;
        scanf("%d",&n);
        for(int i=0;i<n;i++)
        {
            scanf("%d",&ans[i]);
        }
        scanf("%d",&t);
        while(t--)
        {
            memset(bns,0,sizeof(bns));
            scanf("%d%d%d",&l,&r,&k);
            l--;
            r--;
            for(int i=0;i<=r-l;i++)
            {
                bns[i]=ans[i+l];
            }
            sort(bns,bns+r-l+1,cmp);
            printf("%d
    ",bns[k-1]);
        }
        return 0;
    }
    


  • 相关阅读:
    【Hadoop】HDFS的运行原理
    ZOOKEEPER3.3.3源码分析(四)对LEADER选举过程分析的纠正
    zookeeper源码分析二FASTLEADER选举算法
    面试题9:用两个栈实现队列
    面试题7:重建二叉树
    C/C++实现链表的常用操作
    扩展卡尔曼滤波(EKF)实现三维位置估计
    毕业论文思路
    链表常用操作
    关于指针
  • 原文地址:https://www.cnblogs.com/lemonbiscuit/p/7776044.html
Copyright © 2020-2023  润新知