欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
CF1869B.2D Traveling
2D Traveling
题目描述
Piggy 生活在一个带有笛卡尔坐标系的无限平面上。
平面上有 个城市,编号从 到 ,其中前 个城市被定义为主要城市。第 个城市的坐标为 。
Piggy 作为一名经验丰富的旅行者,在中考结束后想要进行一次轻松的旅行。目前,他在城市 ,想要乘飞机前往城市 。你可以在任意两个城市之间飞行,并且在旅行途中可以以任意顺序访问若干城市,但最终目的地必须是城市 。
由于主要城市之间贸易活跃,主要城市之间可以免费乘坐飞机。具体来说,城市 和城市 之间的机票价格 定义如下:
$$f(i, j) = \begin{cases} 0, & \text{如果城市 } i \text{ 和城市 } j \text{ 都是主要城市} \\ |x_i - x_j| + |y_i - y_j|, & \text{否则} \end{cases}$$Piggy 并不想节省时间,但他想节省金钱。因此,你需要告诉他,如果他可以乘坐任意次数的航班,所有机票的总费用的最小值是多少。
输入格式
输入的第一行为一个整数 (),表示测试用例的数量。接下来是每个测试用例的描述。
每个测试用例的第一行为四个整数 、、 和 (,,,),分别表示城市的数量、主要城市的数量、起点城市编号和终点城市编号。
接下来的 行中,第 行包含两个整数 和 (),表示第 个城市的坐标。前 行描述主要城市。保证所有城市的坐标两两不同。
保证所有测试用例中 的总和不超过 。
输出格式
对于每个测试用例,输出一个整数,表示所有机票总费用的最小值。
说明/提示
在第一个测试用例中:
主要城市用红色标记。最优的航班选择方式为:,总费用为 。注意航班 的费用为 ,因为城市 和 都是主要城市。
在第二个测试用例中,只有 个城市,唯一的方式是从城市 飞到城市 。
在第三个测试用例中,城市 和 都是主要城市,Piggy 可以直接从城市 飞到城市 ,费用为 。
在第四个测试用例中,Piggy 可以选择以下航班:,总费用为 。
由 ChatGPT 4.1 翻译
样例
5
6 2 3 5
0 0
1 -2
-2 1
-1 3
2 -2
-3 -3
2 0 1 2
-1000000000 -1000000000
1000000000 1000000000
7 5 4 2
154 147
-154 -147
123 456
20 23
43 20
998 244
353 100
3 1 3 1
0 10
1 20
2 30
4 3 2 4
0 0
-100 100
-1 -1
-1 0
4
4000000000
0
22
1
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |