蓝桥月赛编程题:元宵节触摸灯笼大赛
创作时间:
作者:
@小白创作中心
蓝桥月赛编程题:元宵节触摸灯笼大赛
引用
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;
}
热门推荐
怀孕补锌的素菜有哪些食物
一篇文档做时间管理怎么做
从厨房小白到牛蛙烹饪大师:超详尽红烧牛蛙做法全解析
IEC62133/EN62133锂电池出口检测标准
李白写梦游天姥吟留别的背景
昆明旅游最佳时间及全年气候特点详解:哪个月份出行最合适?
巴花和黑檀:实木大板茶桌中的两大霸主
锦州小布达拉宫旅行指南推荐
香港银行开户的全面指南与选项分析——选择最适合的账户类型
甲状腺球蛋白高意味着什么
电脑屏幕尺寸对照表(屏幕尺寸、分辨率、观看距离)
自己解绑财务负责人怎么弄
男性怎么交社保可以多拿退休金呢
美国留学期间休学的时间限制与选择
医院项目成本核算方法全解析
沟通重要的精辟句子
Pandas高级数据处理:数据报告生成实战指南
数字万用表测电阻的精准测量方法详解
股票交易中的"B"和"S":含义与解读
仲裁管辖权异议如何提出
如何利用 LSTM 预测上证指数未来值
股市风向标 | 房地产政策与出口环境双重影响市场动向
变数与变革:当前世界经济形势辨析
可持续建筑设计的实践与挑战:筑梦绿色未来之路
小公司股权怎么分配?一文详解股权分配原则与注意事项
权力与禁忌:为何没有人刺杀慈禧太后?
如何应对女同学频繁蹭来蹭去的行为:学会合理设定个人边界-避免不适感
小璐医生话代谢|秋分将至,老年人如何用药食同源的麦冬治失眠
日本经济亮点与隐忧并存
深层解读时间的本质:时间究竟是什么,科学家们怎么看?