CF1017C The Phone Number
题目描述
史密斯夫人想要联系她的丈夫 John Smith,但她忘记了秘密电话号码!
史密斯夫人唯一记得的是,任意 $n$ 的排列都可以作为秘密电话号码。只有那些能使秘密值最小的排列,才有可能是她丈夫的电话号码。
一个长度为 $n$ 的整数序列称为排列,如果它恰好包含 $1$ 到 $n$ 的所有整数且每个只出现一次。
一个电话号码的秘密值被定义为最长上升子序列(LIS)的长度与最长下降子序列(LDS)的长度之和。
一个子序列 $a_{i_1}, a_{i_2}, \ldots, a_{i_k}$(其中 $1\leq i_1 < i_2 < \ldots < i_k\leq n$)被称为上升的,如果 $a_{i_1} < a_{i_2} < a_{i_3} < \ldots < a_{i_k}$。如果 $a_{i_1} > a_{i_2} > a_{i_3} > \ldots > a_{i_k}$,则称为下降的。上升/下降子序列如果在所有上升/下降子序列中长度最大,则称为最长。
例如,若有排列 $[6, 4, 1, 7, 2, 3, 5]$,其 LIS 可以是 $[1, 2, 3, 5]$,所以 LIS 的长度为 $4$。LDS 可以是 $[6, 4, 1]$、$[6, 4, 2]$ 或 $[6, 4, 3]$,所以 LDS 的长度为 $3$。
注意,LIS 和 LDS 的长度可以不同。
请帮助史密斯夫人找到一个能使 LIS 和 LDS 长度之和最小的排列。
输入格式
一行包含一个整数 $n$($1 \le n \le 10^5$),表示你需要构造的排列的长度。
输出格式
输出一个能使 LIS 和 LDS 长度之和最小的排列。
如果有多个答案,输出任意一个即可。
说明/提示
在第一个样例中,你可以构造排列 $[3, 4, 1, 2]$。LIS 可以是 $[3, 4]$(或 $[1, 2]$),所以 LIS 的长度为 $2$。LDS 可以是 $[3, 1]$、$[4, 2]$、$[3, 2]$ 或 $[4, 1]$,LDS 的长度也是 $2$。两者之和为 $4$。注意 $[3, 4, 1, 2]$ 并不是唯一的合法排列。
在第二个样例中,你可以构造排列 $[2, 1]$。LIS 可以是 $[1]$(或 $[2]$),LIS 的长度为 $1$。LDS 是 $[2, 1]$,LDS 的长度为 $2$。两者之和为 $3$。注意排列 $[1, 2]$ 也是合法的。
由 ChatGPT 4.1 翻译