题意: 给出一个序列,问每个位置的元素,分别属于哪一类的东西。第一类 没有出现在任何的上升子序列中。 第三类 出现在所有上升子序列中 。第二类 就是剩下的了。。
求两个东西 , dp[i] 表示 从1到 i 最长上升子序列的长度,dp1[i]表示从i到n 最长上升子序列的长度。
设原序列最长上升子序列长度为len
1. 若dp[i]+dp1[i] - 1 != len , 他就属于第一类。
2. 若 t = dp[i] 的 t 出现了不止一次,且不属于第一类,那他就是第二类。
剩下的就是第三类了。
代码写的有点戳。
#include #include #include #include