我是靠谱客的博主 柔弱方盒,最近开发中收集的这篇文章主要介绍刷题记录:牛客NC19812Mountain,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

传送门:牛客

题目描述:

平面上有n座山,每座山都有左右两面,第i座山的高度为ai,现在弱弱在第一座山的左边山脚下(高度为
0),他想要依此爬过这些山,到达第n座山的右边山脚下。
除了简单的爬上爬下,还有一种特殊操作。
如果弱弱目前在第i座山右面的海拔x的位置,且第j ( i < j )座山的海拔大于等于x,且第i+1,ldots,j-
1i+1,…,j−1座山中没有一座山的海拔高于x,那么他可以使用绳索滑到第j座山左面海拔x的位置。
弱弱想找到一种方式,使得他在行程中海拔变化的幅度最小。请输出最小幅度。

题目描述比较奇怪,一开始读我并没有读懂题目要表达的意思,首先我以为是一道递增子序列之类的题目,有点导弹拦截的意味,再仔细读读又感觉有点点的不对,再发现这道题就是来搞笑的一道题,不知道为什么会有这种题目的存在??

题目要求的就是让我们求出最高海拔的值再乘一个二即可,因为照题目的意思,最高海拔显然我们是一定会经过的,既然这样的话我们所变化的幅度肯定是以最高海拔为主的,又是变化幅度包含增加与减少,因此乘2即可

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <map>
#include <set>
#include <queue>
#include <string.h>
#include <stack>
using namespace std;
typedef long long ll;
#define inf 0x3f3f3f3f
#define root 1,n,1
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
inline ll read() {
ll x=0,w=1;char ch=getchar();
for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') w=-1;
for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';
return x*w;
}
#define maxn 1000000
int a[2000];
int main() {
int n;n=read();
int maxx=-999;
for(int i=1;i<=n;i++) {
a[i]=read();maxx=max(a[i],maxx);
}
cout<<maxx*2<<endl;
return 0;
}

最后

以上就是柔弱方盒为你收集整理的刷题记录:牛客NC19812Mountain的全部内容,希望文章能够帮你解决刷题记录:牛客NC19812Mountain所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部