#B4179. [厦门小学生 C++ 2024] 战线巡逻
[厦门小学生 C++ 2024] 战线巡逻
题目背景
本试题为 2024 年厦门市小学生 C++ 语言复赛试题,数据为洛谷自造。
初赛为笔试。
题目描述
在一条战线中,有 个需要巡逻的点,为了完成巡逻任务,指挥部计划指派 个哨兵,每个哨兵可以自由选择起始位置 ,不消耗体力。但哨兵每移动一个单位距离(从 到 或 ),则消耗 点体力。
指挥部的目标是将 个哨兵合理部署到战线上,使得:
- 所有需要巡逻的点都由至少一名哨兵巡逻过。
- 哨兵总体力消耗的最小。
请你设计一个合理的方案,计算最小的体力消耗,并输出结果。
输入格式
- 第一行,两个整数,分别是 和 ;
- 第二行, 个整数,战线中必须巡逻的坐标 。
输出格式
输出消耗的最少体力。
3 4
-10 -1 1 14
2
4 9
-11 -3 0 9 -100 2 17 20 1
15
5 3
-1000 100 200
0
提示
样例解释 1
- 哨兵 1 初始点位即为 ,接下来无需移动,消耗为 。
- 哨兵 2 初始点位为 ,接下来需向右移动 个位置到点位 ,消耗为 。
- 哨兵 3 初始点位即为 ,接下来无需移动,消耗为 。
综上,总消耗为 。
样例解释 2
- 哨兵 1 初始点位即为 ,接下来无需移动,消耗为 0。
- 哨兵 2 初始点位为 ,接下来无需移动,消耗为 0。
- 哨兵 3 初始点位即为 ,接下来需向右移动 个位置至点位 ,消耗为 ;接下来需向右移动 个位置至点位 ,消耗为 ;接下来需向右移动 个位置至点位 ,消耗为 ;接下来需向右移动 个位置至点位 ,消耗为 ;共计消耗 。
- 哨兵 4 初始点位即为 ,接下来需向右移动 个位置,消耗为 。
综上,总消耗为 。
样例解释 3
根据题意,哨兵巡逻可以做到不消耗体力。
数据范围
对于所有测试数据有:,,。
测试点 | 特殊性质 A | ||
---|---|---|---|
否 | |||
是 | |||
否 | |||
特殊性质 A:保证 恒成立。