A93261.「CTSC2017」最长上升子序列

NOI/NOI+/CTSC

通过率:0%

时间限制:1.00s

内存限制:512MB

题目描述

猪小侠最近学习了最长上升子序列的相关知识。对于一个整数序列 A=(a1,a2,,ak)A = (a_1, a_2, \cdots, a_k),定义 AA 的子序列为:从 AA 中删除若干个元素后(允许不删,也允许将所有 kk 个元素都删除),剩下的元素按照原来的顺序所组成的序列。如果这个子序列的元素从左到右严格递增,则称它为 AA 的一个上升子序列。其中包含元素数量最多的上升子序列称为 AA 的最长上升子序列。例如,(2,4,5,6)(2, 4, 5, 6)(1,4,5,6)(1, 4, 5, 6) 都是 (2,1,1,4,7,5,6)(2, 1, 1, 4, 7, 5, 6) 的最长上升子序列,长度都为 44

现在猪小侠遇到了这样一个问题:给定一个序列 Bm=(b1,b2,,bm)B_m = (b_1, b_2, \cdots, b_m),设 CCBmB_m 的子序列,且 CC 的最长上升子序列的长度不超过 kk,则 CC 的长度最大能是多少?

猪小侠觉得这个问题太简单了,缺乏挑战,他决定提出一个更难的问题。于是他给了你这样一个序列 B=(b1,b2,,bn)B = (b_1, b_2, \ldots, b_n),以及若干次询问。每次询问会给定两个整数 mmkk,你需要对于 BB 序列的前 mm 个元素构成的序列 Bm=(b1,b2,,bm)B_m = (b_1, b_2, \cdots, b_m)kk 回答上述问题。

输入格式

第一行两个整数 n,qn, q,其中 nn 是序列 BB 的长度,qq 是询问次数。
第二行是空格隔开的 nn 个正整数 b1,b2,,bnb_1, b_2, \cdots, b_n
接下来 qq 行,其中第 ii 行包含两个整数 mi,kim_i, k_i,表示对 m=mi,k=kim = m_i, k = k_i 进行询问。

输出格式

输出共 qq 行,按顺序每行一个整数作为回答。

输入输出样例

  • 输入#1

    11 6
    9 6 3 1 5 12 8 4 2 2 2
    5 1
    7 2
    9 1
    9 2
    11 1
    11 11

    输出#1

    4
    6
    5
    8
    7
    11

说明/提示

【样例解释】

询问 11:对于序列 (9,6,3,1,5)(9,6,3,1,5),可以选取子序列 (9,6,3,1)(9,6,3,1),它的最长上升子序列长度为 11

询问 22:对于序列 (9,6,3,1,5,12,8)(9,6,3,1,5,12,8),可以选取子序列 (9,6,3,1,12,8)(9,6,3,1,12,8),它的最长上升子序列长度为 22

询问 33:对于序列 (9,6,3,1,5,12,8,4,2)(9,6,3,1,5,12,8,4,2),可以选取子序列 (9,6,5,4,2)(9,6,5,4,2),它的最长上升子序列长度为 11

询问 44:对于序列 (9,6,3,1,5,12,8,4,2)(9,6,3,1,5,12,8,4,2),可以选取子序列 (9,6,3,1,12,8,4,2)(9,6,3,1,12,8,4,2),它的最长上升子序列长度为 22

询问 55:对于序列 (9,6,3,1,5,12,8,4,2,2,2)(9,6,3,1,5,12,8,4,2,2,2),可以选取子序列 (9,6,5,4,2,2,2)(9,6,5,4,2,2,2),它的最长上升子序列长度为 11

询问 66:对于序列 (9,6,3,1,5,12,8,4,2,2,2)(9,6,3,1,5,12,8,4,2,2,2),可以选取子序列 (9,6,3,1,5,12,8,4,2,2,2)(9,6,3,1,5,12,8,4,2,2,2),它的最长上升子序列长度为 33

对于 100%100\% 的数据, 1n5×1041\leq n\leq 5\times 10^41bi5×1041\leq b_i\leq 5\times 10^41q2×1051\leq q \leq 2\times 10^51kimin1\leq k_i \leq m_i \leq n

首页