蓝桥月赛编程题:元宵节触摸灯笼大赛
创作时间:
作者:
@小白创作中心
蓝桥月赛编程题:元宵节触摸灯笼大赛
引用
CSDN
1.
https://blog.csdn.net/zqystca/article/details/145807201
元宵节到了,小蓝决定参加村里举办的“元宵节触摸灯笼大赛”。比赛规则是这样的:村里有 M 个灯笼,排成一排,编号从 1 到 M。每个灯笼上都挂着一个谜语,小蓝需要按顺序进行猜谜语。比赛共有 N 个谜语,第 i 个谜语对应一个区间 [Li,Ri],表示小蓝可以选择触摸这个区间内的任意一个灯笼来猜这个谜语。小蓝的手一开始放在第 1 个灯笼上(因为这是她的幸运数字)。为了猜谜语,她需要移动手去触摸灯笼。每次移动手,她都会感到“疲劳值”增加,疲劳值的计算方式是:如果她之前的手的位置是 y,现在要移动到位置 x,那么这次移动的疲劳值就是 |y−x|。小蓝的目标是猜完所有谜语,同时尽量减少总疲劳值。她不想让自己的手太累,因为猜完谜语后还要去吃汤圆呢!小蓝想知道,猜完所有谜语后,她的最小总疲劳值是多少,请你帮他计算出答案。
输入格式
第一行包含两个整数 N,M(1≤N≤105,1≤M≤109),分别表示谜语的数量和灯笼的数量。
接下来 N 行,每行包含两个整数 Li,Ri(1≤Li≤Ri≤M),表示第 i 个谜语对应的区间。
输出格式
输出一个整数,表示小蓝猜完所有谜语所需的最小总疲劳值。
样例输入
3 5
1 3
2 4
3 5
样例输出
2
说明
- 初始位置:1。
- 猜第一个谜语:移动到 2,疲劳值为 |1−2|=1。
- 猜第二个谜语:保持在 2,疲劳值为 |2−2|=0。
- 猜第三个谜语:移动到 3,疲劳值为 |2−3|=1。
- 总疲劳值为 1+0+1=2。
思路:
贪心思维,想要保证疲劳值最小,也就是移动的距离要最小。例如1 3 5,肯定要到3的位置,但是有可能会出现一种情况,当到达3位置时候,为3 1 4,如果那样写就会往后走走到1,这样是耗体力的且无用的。所以我们要比较当前位置和当前给出的最小范围,取得较大值,这就是应该走到的点。或者 3 1 2 进一步的这样要走到2。
代码实现
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long ll;
const ll L = 1e5+10;
struct Node{
ll l,r;
};
ll N,M;
Node dt[L];
int main(void)
{
cin >> N >> M;
for(ll i = 1 ; i <= N ; i++)
{
cin >> dt[i].l >> dt[i].r;
}
ll cur_pos = 1;
ll sum = 0;
for(ll i = 1 ; i <= N ; i++)
{
int new_pos = min(max(cur_pos,dt[i].l),dt[i].r);
sum += abs(new_pos - cur_pos);
cur_pos = new_pos;
}
cout << sum;
return 0;
}
热门推荐
高原反应吃什么最好?专业医生给出权威建议
商标设计公司如何帮助能源企业设计出高辨识度的商标
中式外墙设计:传统美学与现代技术的完美融合
成都天府新区天西板块深度解析:优缺点分析与购房建议,有投资价值吗
成都143㎡横向布局公寓:空间利用与设计优化分析
【医疗管理】:运用PDCA降低住院患者跌倒发生率
不良事件原因分析图鱼骨图
夫妻如何重燃爱火,找回亲密感的秘诀
考古新发现:盘庚迁都背后的商朝战略布局
殷墟新馆开放,揭秘盘庚迁都的秘密
盘庚迁殷:商朝版的城市发展攻略
权威认证:熊猫电子的历史沿革
玩转黑坑,线组搭配也有诀窍,全面解析帮你上岸!
杜鲁门投下原子弹:终结二战的关键决策
核威慑理论如何应对不对称核升级?
古巴导弹危机:人类最接近核战争的13天
如何正确佩戴蓝牙耳机以提升使用体验与音质效果
肺炎患者的日常护理指南
肺炎恢复期吃什么食物
社区性肺炎治疗最佳方法
罗布奥特曼:两兄弟的元素之力
为什么日本总是发生地震?
发现我国金丝猴的三大奇特之处,让你惊艳不已!
幽默故事搞笑段子——启发灵感,激发创造力
皮肤干燥起皮,教你几招,皮肤水润,也白了
易学文化考试网:如何理解易学的基本原理?易学的核心思想是?
硬盘寿命揭秘:如何延长硬盘使用壽命?
遗嘱继承中的心理支持:如何帮助家庭渡过难关
古代遗产继承制VS现代家庭财富传承
肺炎早期症状及科学治疗方案