CF261D Maxim and Increasing Subsequence
题目描述
Maxim 喜欢数列,尤其是那些严格递增的数列。他想知道,给定数列 $a$ 的最长递增子序列的长度是多少?
数列 $a$ 的给定方式如下:
- 数列的长度为 $n×t$;
- $a_i=b_{(i-1)\bmod n+1}$,其中 $1 \leq i \leq n×t$,符号 $\bmod$ 表示取模运算,即 $x$ 除以 $y$ 的余数。
序列 $s_1, s_2, ..., s_r$ 是序列 $a_1, a_2, ..., a_{n}$ 的子序列,当且仅当存在一个严格递增的下标序列 $i_1, i_2, ..., i_r$($1 \leq i_1 < i_2 < ... < i_r \leq n$),使得 $a_{i_j} = s_j$。换言之,子序列可以通过从原数列中删去若干元素得到。
若序列 $s_1, s_2, ..., s_r$ 满足 $s_1 < s_2 < ... < s_r$,则称其为递增序列。
Maxim 有 $k$ 个数列 $a$ 的备选方案。请帮助 Maxim 求出每个数列对应的最长递增子序列的长度。
输入格式
第一行包含四个整数 $k$、$n$、$maxb$ 和 $t$($1 \leq k \leq 10$;$1 \leq n, maxb \leq 10^{5}$;$1 \leq t \leq 10^{9}$;$n \times maxb \leq 2 \cdot 10^{7}$)。
接下来的 $k$ 行,每行包含 $n$ 个整数 $b_1, b_2, ..., b_n$($1 \leq b_i \leq maxb$)。
请注意,对于每种 $a$ 的方案,$n$、$maxb$ 和 $t$ 都是相同的,只有 $b$ 数组不同。
数与数之间由单个空格分隔。
输出格式
输出 $k$ 个整数,按输入顺序依次输出每个 $a$ 的最长递增子序列的长度。
说明/提示
由 ChatGPT 5 翻译