1/7的小数点后2020位的数字是_如果把数字5写在某自然数右端

1/7的小数点后2020位的数字是_如果把数字5写在某自然数右端给定长度为 N 的整数序列 A,下标为 1∼N。现在要执行 M 次操作,其中第 i 次操作为给出三个整数 li,ri,ki,求 A[li],A[li+1],…,A[ri] (即 A 的下标区间 [li,ri])中第 ki 小的数是多少。输入格式第一行包含两个整数 N 和 M。第二行包含 N 个整数,表示整数序列 A。接下来 M 行,每行包含三个整数 li,ri,ki,用以描述第 i 次操作。输出格式对于每次操作输出一个结果,表示在该次操作中,第 k 小的数的数值。每个结果占一行。数据范围

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

给定长度为 N 的整数序列 A,下标为 1∼N。

现在要执行 M 次操作,其中第 i 次操作为给出三个整数 li,ri,ki,求 A[li],A[li+1],…,A[ri] (即 A 的下标区间 [li,ri])中第 ki 小的数是多少。

输入格式
第一行包含两个整数 N 和 M。

第二行包含 N 个整数,表示整数序列 A。

接下来 M 行,每行包含三个整数 li,ri,ki,用以描述第 i 次操作。

输出格式
对于每次操作输出一个结果,表示在该次操作中,第 k 小的数的数值。

每个结果占一行。

数据范围
N≤105,M≤104,|A[i]|≤109

输入样例:
7 3
1 5 2 6 3 7 4
2 5 3
4 4 1
1 7 3
输出样例:
5
6
3
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
const int N = 1e5+10, M = 1e4+10;
int w[N], root[N], idx;
vector<int> pos;
int n, m;
struct Node
{ 
   
    int l, r, cnt;
}t[N * 4 + 17 * N];
void build(int &u, int L, int R)
{ 
   
    u = ++ idx;
    if(L == R) return;
    int mid = L + R >> 1;
    build(t[u].l, L, mid); build(t[u].r, mid + 1, R);
}
int getp(int x)
{ 
   
    return lower_bound(pos.begin(), pos.end(), x) - pos.begin();
}
void insert(int p, int &q, int L, int R, int k)
{ 
   
    q = ++ idx; t[q] = t[p]; t[q].cnt ++;
    if(L == R) return;
    int mid = L + R >>1;
    if(k <= mid) insert(t[p].l, t[q].l, L, mid, k);
    if(k > mid) insert(t[p].r, t[q].r, mid + 1, R, k);
}
int query(int p, int q, int k, int L, int R)
{ 
   
    if(L == R) return L;
    int mid = L + R >> 1;
    int cnt = t[t[q].l].cnt - t[t[p].l].cnt;
    if(cnt >= k) return query(t[p].l, t[q].l, k, L, mid);
    if(cnt < k) return query(t[p].r, t[q].r, k - cnt, mid + 1, R);
    
}
int main()
{ 
   
    scanf("%d%d", &n, &m);
    for(int i = 1; i <= n; ++ i)
    { 
   
        scanf("%d", &w[i]);
        pos.push_back(w[i]);
    }
    sort(pos.begin(), pos.end());
    pos.erase(unique(pos.begin(), pos.end()), pos.end());
    build(root[0], 0, pos.size() - 1);
    for(int i = 1; i <= n; ++ i) insert(root[i - 1], root[i], 0, pos.size() - 1, getp(w[i]));
    while(m -- )
    { 
   
        int l, r, k; scanf("%d%d%d", &l, &r, &k);
        printf("%d\n", pos[query(root[l - 1], root[r], k, 0, pos.size() - 1)]);
    }
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/169095.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月10日 下午9:36
下一篇 2022年8月10日 下午9:36


相关推荐

  • java迭代和 递归的异同_递归和迭代有什么区别?简述区别

    java迭代和 递归的异同_递归和迭代有什么区别?简述区别你对于递归和迭代都了解吗?那么你是否知道递归和迭代的区别呢?那么下面就和小编一起来了解一下,这两者之间的区别究竟是怎样的吧!一、递归和迭代区别首先我们要讲到的就是两者之间的概念。首先,程序调用自身的编程技巧叫做递归,函数自己调用自己。一个函数在它的定义当中,直接或者是间接的调用自身的一种方法。它经常将一个大型的复杂的问题转化为一个和原来的问题相似的但是规模较小的问题来解决。这样能够极大的减小代码量…

    2022年5月3日
    53
  • Android scaleType属性

    Android scaleType属性转自:https://blog.csdn.net/lirui0822/article/details/384234231、android:scaleType=”center”(1)当图片大于ImageView的宽高:以图片的中心点和ImageView的中心点为基准,按照图片的原大小居中显示,不缩放,用ImageView的大小截取图片的居中部分。(2)当图片小于ImageView的…

    2022年6月29日
    32
  • printwriter用法_printwriter设置编码

    printwriter用法_printwriter设置编码PrintWriter的使用java.io.PrintWriter具有自动行刷新的缓冲字符输出流,特点是可以按行写出字符串,并且可以自动行刷新。java.io.BufferedWriter是缓冲字符输出流,内部有缓冲区可以进行块写操作提供效率,而PrintWriter就是通过连接它实现的缓冲功能(PW的很多构造方法内部自动连接它)。PW支持两个直接对文件写操作的构造方法:*…

    2022年8月10日
    14
  • 面试官:怎么做JDK8的内存调优?

    面试官:怎么做JDK8的内存调优?看着面试官真诚的眼神 心中暗想看起来年纪轻轻却提出如此直击灵魂的问题 擦了擦额头上汗 我稍微调整了一下紧张的情绪 对面试官说

    2026年3月18日
    1
  • 手推向量投影长度、投影向量

    手推向量投影长度、投影向量投影 t uy ng 数学术语 指图形的影子投到一个面或一条线上 声明向量 F 为 F 向量 F 的大小为 F 向量 b 为 b 向量 b 的大小为 b 当我们得到了投影的大小之后 F 因为 F 在 b 上所以单位向量相同 F 和 b 存在一个比值关系如下 F F b b 因此投影向量 F 为 F b b

    2026年3月19日
    1
  • html怎么隐藏播放器_css遮罩

    html怎么隐藏播放器_css遮罩<!DOCTYPEhtml><htmllang=”en”><head><metacharset=”UTF-8″><metaname=”viewport”content=”width=device-width,initial-scale=1.0″><metahttp-equiv=”X-UA-Compatible”content=”ie=edge”><title>视.

    2025年5月26日
    12

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号