传送门:P1020 [NOIP1999 提高组] 导弹拦截
题目大意:
一个拦截导弹的系统,每次只能拦截高度不超过上一个的导弹
求出:
- 一个系统最多能拦截的导弹数量;
- 要拦截所有导弹最少需要的该系统的数量。
思路:
第一问:
一眼就是 最长单调不上升子序列,朴素DP求解,复杂度为 O(n^2);请参考,能过掉 50% 的数据。
考虑优化:
第二问:
简单贪心
从左到右依次枚举每个导弹。假设现在有若干个导弹拦截系统可以拦截它,那么我们肯定选择这些系统当中上一个拦截导弹位置最低的那一个。
如果不存在任何一个系统可以拦截它,那我们只能新加一个系统了。
时间复杂度 O(nlogn),可以通过此题。