#19277. 烽火连天
烽火连天
你好!我是你的OI金牌教练。
这一次,我们将穿越回中国古代历史,结合**“长城与烽火台”的背景,设计一道考察一维数组遍历**、间隔计算以及贪心思维的 GESP 4级难度题目。
第一部分:背景知识讲解
在做题之前,让我们了解一下中国古代军事防御工程中的烽火台(Beacon Tower)。
1. 烽火台的作用
烽火台是古代长城防线的重要组成部分。它是古代的“雷达”和“无线电”。
- 白天燃烟(烽):因为白天火光不明显,主要靠浓烟传递信号(通常使用狼粪,称为“狼烟”)。
- 夜晚举火(燧):夜晚火光清晰,点燃火炬传递信号。
2. 信息传递机制
当边境发现敌情时,第一座烽火台点燃烽火,邻近的第二座看到后立即点燃,接着传给第三座……如此接力,能在极短的时间内将警报传到千里之外的京师或大本营。
3. 传递距离的限制
为了保证信号能被准确看到,两座烽火台之间的距离不能太远。受地形、视线和天气影响,两座烽火台之间有一个最大有效可视距离。如果两座现有的烽火台距离超过了这个限制,信号就会中断,必须在中间增修新的烽火台来填补空缺。
第二部分:题目内容
题目名称:烽火连天 (Beacon Fires)
题目描述
汉朝时期,为了防御匈奴的侵扰,朝廷在边境线上修建了一系列烽火台。
我们可以将边境线简化为一条数轴。目前在边境线上已经修建了 座烽火台,它们的位置坐标分别是 。为了方便管理,这些坐标是按照从小到大的顺序给出的(即 )。
经测试,两座烽火台之间的距离如果超过了 里(古代长度单位),信号就无法准确传送。 为了确保整条防线的信号畅通(即任意相邻两座烽火台的距离都不超过 ),大将军霍去病决定在现有的烽火台之间增修一些新的烽火台。
请你编写程序计算:为了使所有相邻烽火台(含新修的)之间的距离都不超过 ,最少需要新修多少座烽火台?
输入格式
第一行包含两个正整数 和 。
- 表示已有烽火台的数量。
- 表示最大有效可视距离。
第二行包含 个用空格隔开的正整数 ,表示现有烽火台的坐标。保证坐标是严格递增的。
输出格式
输出一行一个整数,表示最少需要增修的烽火台数量。
输入输出样例 #1
输入:
3 10
0 10 25
输出:
1
样例 #1 解释:
- 第1段: 到 ,距离为 。,符合要求,无需增修。
- 第2段: 到 ,距离为 。,信号中断。
- 我们需要在中间修一座。最佳方案是在坐标 处修一座。
- 这样变成了 (距离10) 和 (距离5),都符合要求。
- 总计:需要增修 1 座。
输入输出样例 #2
输入:
4 5
10 20 22 35
输出:
3
样例 #2 解释:
- :距离 10。。
- 需要在 15 修一座。变为 。
- 增修数量:1。
- :距离 2。,无需增修。
- :距离 13。。
- 需要在 27, 32 修两座。变为 。
- 增修数量:2。
- 总计:。
数据范围
对于 的数据: