1 solutions
-
0
题面描述
塔子哥接到一项任务,需要在一条长为 公里的河流上监测水质。河流沿线有 个候选地点适合建设水质监测站,每个监测站的覆盖半径为 公里,建设一个监测站的成本为 。任务是计算出最少需要多少经费才能覆盖整条河流,如果无法通过在所有候选地点建设监测站来实现覆盖,则输出 "-1"。输入包括河流长度、覆盖半径、建设成本以及候选地点的具体位置,输出则是最少经费或 "-1"。
思路
区间覆盖模板题目,这道题和区间覆盖的区别在于区间固定,我们使用贪心去解决对应的问题。
对于地址,假设地址小于的都已经被覆盖,那么如果我们需要覆盖它,我们可以选择的基站位置在范围内。假设现在存在两个基站和都满足对应的要求,那么我们更偏向于选择基站,因为,这样的基站可以比基站覆盖更多后面的地址。
因此,我们对于每一个地址,我们都要进行的循环(这里枚举到,而不枚举到的原因在于一旦选择这个基站,那么肯定存在大于的部分实数地址无法被覆盖),从开始找基站,一旦找到就调用对应的基站。调用基站后,那么我们范围的所有地址都会被覆盖,因此,下一次我们需要枚举的地址应该从开始(不是,因为我们需要保证所有实数地址被覆盖,而不是所有整数地址被覆盖)。
代码
CPP
python
Java
Go
Js
- 1
Information
- ID
- 29
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 5
- Tags
- # Submissions
- 84
- Accepted
- 17
- Uploaded By