占领高地(3-3)
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目背景
在一次重要的秋季演习中,指挥官岐岐接到任务:在一条连绵的山脉上占领若干高地,以确保所有高地都在我方火力覆盖之下,从而有效地抵御敌方偷袭。为了节约兵力,岐岐希望以最少的占领数量完成任务。
题目描述
在一条很长的直线形山脉上,有 个高地,编号为 的高地位于从左到右 米处,高度为 米。我们记第 个高地的坐标为 ((x_i, h_i))。
每个高地的火力覆盖范围由通过 ((x_i,h_i)) 且斜率为 和 的两条半直线所界定,如下图所示。其覆盖区域对应于平面中满足
的所有点。
若某个高地的位置不在我方已占领高地的火力覆盖范围内,就存在被敌方占领的风险,必须派兵去占领;反之则无需占领。请在满足所有高地都处于我方火力覆盖之下的前提下,求出我方最少需要占领的高地数量。
输入格式
输入共三行。
第一行输入一个整数 ,表示高地数量。
第二行输入 个整数,第 个整数为 。
第三行输入 个整数,第 个整数为 。
输出格式
输出一行,一个整数,表示我方最少需要占领的高地数量。
样例
10
66 80 88 10 79 1 44 56 90 92
57 58 63 58 66 39 74 88 47 61
5
10
39 100 66 16 25 76 47 49 68 87
72 14 50 43 29 56 33 87 61 19
1
样例解释
样例1:选择 5 个关键高地,其火力交叠覆盖了其它所有高地的位置,满足全线防御且占领数最少。
样例2:编号为 8 的高地(位置 49,高度 87)自身火力范围足以覆盖所有其他高地,仅需占领 1 个即可。
数据范围
- 对于 10% 的数据,所有 相等;
- 对于另外 10% 的数据,;
- 对于 40% 的数据,;
- 对于 100% 的数据,,,;
- 保证不存在两个高地的 相同。
- 要求算法时间复杂度最好达到 (O(n\log n)) 或更优。