/**
* 路灯照明问题
*
* 在一条笔直的公路上安装了N个路灯,从位置0开始安装,路灯之间间距固定为100米。
*
* 每个路灯都有自己的照明半径,请计算第一个路灯和最后一个路灯之间,无法照明的区间的长度和。
*
* 输入描述
*
* 第一行为一个数N,表示路灯个数,1<=N<=100000
*
* 第二行为N个空格分隔的数,表示路径的照明半径,1<=照明半径<=100000*100
*
* 输出描述
*
* 第一个路灯和最后一个路灯之间,无法照明的区间的长度和
*
* 示例1 输入输出示例仅供调试,后台判题数据一般不包含示例
*
* 输入
*
* 2
*
* 50 50
*
* 输出
*
* 0
*
* 说明
*
* 路灯1覆盖0-50,路灯2覆盖50-100,路灯1和路灯2之间(0米-100米)无未覆盖的区间。
*
* 示例2 输入输出示例仅供调试,后台判题数据一般不包含示例
*
* 输入
*
* 4
*
* 50 70 20 70
*
* 解释:
*
* 路灯1 覆盖0-50
*
* 路灯2 覆盖30-170
*
* 路灯3 覆盖180-220
*
* 路灯4 覆盖230-370
*
* 输出
*
* 20
*
* 说明
*
* [170,180],[220,230],两个未覆盖的区间,总里程为20
*/文章来源地址https://www.toymoban.com/news/detail-553842.html
public class StreetLighting {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int lightNum = Integer.parseInt(sc.nextLine());
List<Integer> radius = new ArrayList<>();
for (int i = 0; i < lightNum; i++){
radius.add(sc.nextInt());
}
int range = rang(radius);
System.out.println(range);
}
public static int rang(List<Integer> radis){
int range = 0;
int left;
int right = radis.get(0);
int beforeRight = right;
for (int i = 1; i < radis.size(); i++) {
int value = 100 * (i);
left = value - radis.get(i);
right = value + radis.get(i);
if (left > beforeRight) {
range = range + (left - beforeRight);
}
beforeRight = right;
}
return range;
}
}
文章来源:https://www.toymoban.com/news/detail-553842.html
到了这里,关于华为OD真题-路灯照明的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!