【java编程提问】

提问:【java编程】

【问题描述】

有n个大小相仿的村庄坐落在一条直线上,第i(i>1)个村庄距离第1个村庄的距离为Di。需要在这些村庄中建立一些通讯基站,使得每个村庄都被覆盖。

已知有三种不同类型的基站:

(A) 建设成本为cost[0]; 只能覆盖建立基站的村庄,即半径为 0。

(B) 建设成本为cost[1]; 能够覆盖以建立基站为中心,半径 3 以内的村庄。

© 建设成本为cost[2]; 能够覆盖以建立基站为中心,半径 15 以内的村庄。

为方便管理,假设基站只能建立在距离第1个村庄距离为非负整数的位置上。问如何选择基站的位置,使得总费用最小?

【输入形式】

第一行为不定长的单调递增的整型数组,代表在距离第一个村庄距离为Di的位置坐落着第i个村庄。

第二行为长度为3的整型数组,对应 cost[0], cost[1], cost[2].

【输出形式】

最小的总费用。

【样例输入】

0 1 2 3 4 5 6 7 8 9 29 33

2 7 15

【样例输出】

17

【样例说明】

在距离15的位置建立一个C基站,覆盖距离 [0, 31], 花费 15.

在距离33的位置建立一个A基站,覆盖距离 33,花费 2.

总费用 15+2=17
【怎么样使用Java解决】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值