题目描述
题目描述
小理养了 $N$ 头奶牛,每头牛都有一个不超过 $32$ 位二进制数的正整数编号。小理希望奶牛们在进食前,能按编号从小到大的顺序排好队,但奶牛们从不听他的话。为了让奶牛们养成这个习惯,每次开饭时,小理按照从前到后的顺序挑出一些奶牛,这些奶牛的编号必须递增。然后小理让被挑出的奶牛们吃饭——其他奶牛就只能饿肚子了。
现在,你得到了这一次开饭前队伍中从前到后所有奶牛的编号。奶牛们想请你计算一下,按照小理的规定,最多有多少头奶牛能吃上饭?
比如说,有 $11$ 头奶牛按以下顺序排好了队(数字代表奶牛的编号)为
$2$ $5$ $1$ $8$ $3$ $4$ $7$ $10$ $9$ $11$ $8$ $15$
对于这个队列,最多可以让 $7$ 头奶牛吃上饭,她们的编号分别为 $2,3,4,7,10,11,15$。队列 $2,5,3,10,15$ 是不合法的,因为第 $3$ 头奶牛的编号($3$)小于它前面一头奶牛的编号($5$)。
输入格式
输入共两行。
第 $1$ 行输入一个整数 $N$ 。
第 $2$ 行输入 $N$ 个整数,依次表示队伍中从前到后的奶牛的编号。
输出格式
输出一行,按照小理的规定,最多可以挑出的奶牛的数目。
样例输入输出
样例输入
11
2 5 18 3 4 7 10 9 11 8 15
样例输出
7
数据范围
对于 $100%$ 的数据,保证 $1 \le N \le 5000$。
来源/分类
动态规划 贪心 线性dp 2006 USACO