T1:这题是区间dp。
设f[i][j]表示用i~j的元素构成一个合法的出栈序列的方案数。转移时我们可以枚举k(i<=k<=j),表示k为i~j中最后弹出的元素。那么容易发现i~k-1一定是在k+1~j之前弹出的。所以一个k合法的条件就是对于所有的限制x、y(i<=x,y<=j),不存在x=k或x在k+1~j中而y在i~k-1中。如果一个k是合法的,那么我们就可以用f[i][k-1]*f[k+1][j]转移到f[i][j]。至此这题就做完了。
这题如果把dp状态设为处理好1~i的话那么不是很好转移,所以可以考虑区间dp。