最长严格上升子队列
 3 成为长度为 1 的一串,但后面两个都比它小 1 成为长度为 1 的一串,2 比它大,所以得到长度为 2 的子序列 所以我们可以得到下面的状态转移方程:
 using namespace std;
 int n;
 int max=0;
 合唱队形
 定睛一看,是不是有点眼熟,是的,它也是最长子序列 不过这道题是要求在中间找一个"峰值",使其左边的最长升序子序列与右边最长降序子序列的长度加起来最大 其中就可以很容易得出这样一种思路 - 我们在动归的同时,把每个数左边与右边存下来,这样一来,问题的思路就明朗了
 using namespace std;
 int n;
 int a,left,rig;
 int max;
 导弹拦截?拦截导弹?傻傻分不清楚 这道提的第一问就是一个简单的最长不降子序列,具体操作大家都明白 但是第二问求的是最少有几个最长不降子序列,这个就很艰难, 暴力当然会T,所以这题是有一个数学方法的,如果你想知道怎么求证,可以去bing 博主在这里只会讲讲这个定理
 最少有几个不降子序列=最长上升序列的长度
 以此类推,我们还可以得到:
 最少有几个不升子序列=最长下降子序列的长度 最少有几个上升子序列=最长不升序列的长度 最少有几个不降子序列=最长不降序列的长度
 那么这道题就很容易求解了,第一个输出最长不降子序列,第二个输出最长上升子序列
 using namespace std;
 int f[21];