[网络流24题]最长递增子序列问题
题号:NC213820
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

给定正整数序列x1 ,...... , xn。
(1)计算其最不下降子序列的长度s。
(2)计算从给定的序列中最多可取出多少个长度为s的不下降子序列。
(3)如果允许在取出的序列中多次使用x1和xn,则从给定序列中最多可取出多少个长度为s的不下降子序列。
编程任务:设计有效算法完成(1)(2)(3)提出的计算任务。

输入描述:

第1 行有1个正整数n,表示给定序列的长度。接下来的1 行有n个正整数n x1,x2,... , xn 。

输出描述:

程序运行结束时,将任务(1)(2)(3)的解答输出。第1 行是最长不下降子序列的长度s。第2行是可取出的长度为s 的不下降子序列个数。第3行是允许在取出的序列中多次使用x1和xn时可取出的长度为s 的不下降子序列个数。
示例1

输入

复制
4
3 6 2 5

输出

复制
2
2
3

备注:

1≤n≤500