#iai15b3. 装卸问题(Loading Problem)
装卸问题(Loading Problem)
装卸问题(Loading Problem)
题目描述
有一天,码头上陆续运来了 n 只集装箱,到了第二天,这些集装箱会全部装船出海,第 i 号集装箱属于第 aᵢ 号轮船的货物。
箱子到港的时候,为了节约场地,可以将一些箱子竖直叠放。但要满足两个要求:
- 首先,不能让先到的箱子堆到后来的箱子的上方,箱子到港的顺序就是箱子的编号,1 号集装箱最先到港;
- 其次,在装船的时候,每个箱子的上方应该没有装到其他船的箱子。船舶到港的顺序就是船舶的编号,1 号船最先到港。
请帮助小爱计算一下,为了满足装货的要求,至少需要将这些箱子堆成多少堆。
输入格式
- 第一行:单个整数表示 n。
- 第二行:n 个整数表示 a₁,a₂,⋯,aₙ。
输出格式
- 单个整数:表示箱子最少可以分成多少堆。
数据范围
- 对于 30% 的数据,1 ≤ n ≤ 500;
- 对于 60% 的数据,1 ≤ n ≤ 5000;
- 对于 100% 的数据,1 ≤ n ≤ 100,000;
- 1 ≤ aᵢ ≤ n。
样例输入 #1
5 5 4 3 2 1
样例输出 #1
1
说明:五只箱子可以堆在一起。
样例输入 #2
6 5 4 4 3 1 2
样例输出 #2
2
说明:5 4 4 3 1一堆,2单独一堆,也存在其他最优方案。
知识点与难度
本题涉及的知识点从属于 GESP 5级,难度等级:⭐⭐。
测试点分布
| Subtask | 分值 | 测试点编号 | 说明 |
|---|---|---|---|
| 0 | 10 | 1~2 | 样例 |
| 1 | 20 | 3~8 | 小规模 n≤10 / 特殊: 全相同 / 特殊: 严格递减 |
| 2 | 15 | 9~11 | Hack: n=1 / Hack: 全相同 / Hack: 严格递增 |
| 3 | 30 | 12~20 | 中规模 n≈500~5000 / 大规模 n≈100000 压力 |
| 4 | 25 | 21~25 | 随机 n=1~100000 回归 |