P9677 [ICPC 2022 Jinan R] Stack Sort
题目描述
给定一个包含 $n$ 个数字的排列 $a_1, a_2, \dots, a_n (1\leq a_i\leq n, a_i
\neq a_j\text{ 当 }i
\neq j)$。
你需要使用 $m$ 个栈对这些数字进行排序。具体来说,你需要完成以下任务:
最初,所有栈都是空的。你需要按照 $a_1,a_2,\ldots, a_n$ 的顺序,将每个数字 $a_i$ 压入 $m$ 个栈中的一个栈的顶部。**在将所有数字压入栈中之后**,你需要以一种巧妙的顺序从栈中弹出所有元素,使得你弹出的第一个数字是 $1$,第二个数字是 $2$,依此类推。**如果你从一个栈 $S$ 中弹出一个元素,那么在 $S$ 变空之前,你不能从其他栈中弹出任何元素。**
完成任务所需的最小 $m$ 是多少?
输入格式
第一行包含一个整数 $T~(1\le T \le 10^5)$,表示测试用例的数量。
对于每个测试用例,第一行包含一个正整数 $n~(1\le n \le 5 \times 10^5)$。下一行包含 $n$ 个整数 $a_1,\ldots, a_n~(1 \le a_i\le n)$,表示排列。保证 $a_1,\ldots, a_n$ 形成一个排列,即 $a_i
\neq a_j$ 对于 $i
\neq j$。
保证所有测试用例中 $n$ 的总和不超过 $5\times 10^5$。
输出格式
对于每个测试用例,输出一个整数,表示完成任务所需的最小 $m$。
说明/提示
题面翻译由 ChatGPT-4o 提供。