0740 ABC354_F Useless for LIS | OJ题库 | CODE STUDY
CODE STUDY
Programming Practice Platform

欢迎回来

0740

ABC354_F Useless for LIS

Easy 时间限制 1000 ms 内存限制 262144 KB
动态规划 最长上升子序列

题目详情

返回题库

题目描述

给你一个长度为N的整数序列A。

对于每个t=1,2,…,N,判断At​是否包含在A的最长递增子序列中。

这里,当且仅当下面的条件成立时,At​才包含在A的最长递增子序列中:

  • 设L是A的最长递增子序列的长度。存在一个严格递增的整数序列i=(i1​,i2​,…,iL​)(i1​<i2​<⋯<iL​),其中每个元素都在1与N之间(含),且满足以下所有条件:

    • Ai1​​<Ai2​​<⋯<AiL​​.
    • ik​=t为某个k(1≤k≤L)。

给你T个测试用例,请逐个求解。

什么是最长递增子序列?

序列A的子序列是从A中抽取一些元素而不改变其顺序而得到的序列。

序列A的最长递增子序列是A的子序列,它以最大可能的长度严格递增。

输入描述

第一行输入T代表T组数据

接下来T*2行数据

每组数据第一行输入一个N,第二行输入数列$A_1,A_2,A_3,\cdots,A_N$

数据范围:

  • 1≤T≤2×$10^{5}$
  • 1≤N≤2×$10^{5}$
  • 1≤Ai​≤$10^{9}$
  • 所有测试用例中N的总和最多为2×$10^{5}$

输出描述

按以下格式打印答案

ans1
ans2
ans3
....
ansn


answeri​代表第i个案例的输出结果。对于每种情况,让m索引t中的At​包含在A的最长递增子序列中,这些子序列按升序排列为i1​,i2​,…,im​。请按以下格式打印:

m
$i_1,i_2,i_3,\cdots,i_m$

提示

样例1:

其中一个最长的递增子序列是(2,4,5),长度为3。另一个最长的递增子序列是(1,4,5)。然而,没有一个最长的递增子序列包括A5​。

因此,打印1,2,3,4

测试样例

样例支持多行内容展示
样例1
输入
1
5
2 1 4 5 3
输出
4
1 2 3 4
样例2
输入
2
6
2 5 3 4 3 4
5
10000 1000 100 1 10
输出
5
1 3 4 5 6
2
4 5
editor.py

提交前会先自动运行样例。只有样例全部通过,才会进入后端正式判题。