这篇题解可以看看(洛谷第一篇)
讲下我的做法
首先发现对于最终的序列,任意两个数(设为\(x\)和\(y\))之间一定不会存在一个比两个数都小的数被删除,不然的话,我们设\(x\)和\(y\)之间最小的数为\(p\),那么某个区间删除\(p\)的时候一定会同时把\(x\)或\(y\)的某一个数删除
所以设\(f[i]\)表示前\(i\)个数,保留第\(i\)个数的所有方案,\(p\)为小于\(a_i\)的下标最大的数的下标
那么显然,\([p+1,i-1]\)中每一个数都可以保留
\(p\)当然也可以保留,但还有没有可以保留的数?
稍微分析一下,就可以知道,再找一下小于\(a_p\)的下标最大的数的下标\(q\),那么\(q\)也可以保留;再找一下小于\(a_q\)的下标最大的数的下标\(w\),那么\(w\)也可以保留...以此类推
我用了动态st+分治寻找\(p\)但实际上用单调栈就好了
标签:下标,Collapse,可以,保留,数都,Array From: https://www.cnblogs.com/dingxingdi/p/18032126