A6717 | 「SDOI2012」基站建设
时间限制2s
内存限制512MB
通过 / 提交0/0
题目描述
UP 主家终于买电脑了,但是接下来有各种问题要处理。首要解决的问题就是网络问题。他要从移动公司开始,通过一些基站来传递网络到他家。
为了简化问题,我们假设移动公司,所有的基站,UP 主家位于同一条直线上,他们都位于这一条直线上的某一点$x$,这些点不会重合。每个基站发射和接收的范围都是一个切于地面的圆,发射的半径 $r_1$ 是固定的,接收半径 $r_2$ 是可调的的。如下图:

一个点 $i$ 如果能从另一个点 $j$ 接收到信号(当且仅当 $x_j < x_i$),必须满足i的接收范围与j的发射范围相切,并且需要付 $\sqrt{r_{2_i}}$ 的额外费用。同时启动每一个点 $i$ 都需要费用 $v_i$。
当然一个点如果能够发射到 UP 主家只需要这个点的发射范围与 UP 主家所在的竖线相切或相交即可,如下图:

当然费用越少就越好咯,于是 UP 主想要请你帮他的忙。
为了简化问题,我们假设移动公司,所有的基站,UP 主家位于同一条直线上,他们都位于这一条直线上的某一点$x$,这些点不会重合。每个基站发射和接收的范围都是一个切于地面的圆,发射的半径 $r_1$ 是固定的,接收半径 $r_2$ 是可调的的。如下图:

一个点 $i$ 如果能从另一个点 $j$ 接收到信号(当且仅当 $x_j < x_i$),必须满足i的接收范围与j的发射范围相切,并且需要付 $\sqrt{r_{2_i}}$ 的额外费用。同时启动每一个点 $i$ 都需要费用 $v_i$。
当然一个点如果能够发射到 UP 主家只需要这个点的发射范围与 UP 主家所在的竖线相切或相交即可,如下图:

当然费用越少就越好咯,于是 UP 主想要请你帮他的忙。
输入格式
第一行两个整数 $n, m$,分别表示基站个数(包括移动公司),UP 主家的坐标(保证大等于所以基站的坐标)。
记下来 $n$ 行,每行三个整数 $x_i, r_{1_i}, v_i$,表示每个基站的坐标,发射范围以及费用。
$x_i$ 是按照坐标从小到大输入的,移动公司位于最小的那个坐标。
$r$ 为 $1 \sim n$ 的排列。
记下来 $n$ 行,每行三个整数 $x_i, r_{1_i}, v_i$,表示每个基站的坐标,发射范围以及费用。
$x_i$ 是按照坐标从小到大输入的,移动公司位于最小的那个坐标。
$r$ 为 $1 \sim n$ 的排列。
输出格式
一个实数,保留小数点后三位。
输入输出样例
输入 #1
10 33 5 4 660 10 2 2040 11 6 3207 14 5 2006 18 3 6130 19 9 3363 22 1 1265 25 8 2836 27 10 7961 29 7 9075
输出 #1
3501.000
对于 $100\%$ 的数据,$n \leq 5 \times 10^6$,$x_i, m \leq 10^{12}$,$v_i \leq 10000$。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?