题目
签到题。
n-1条道路所以每个相邻的点都有连线,费用就是左右比较后大的那个,加在一起就可以得出答案。
附上AC代码。
#include<bits/stdc++.h>
using namespace std;
long long a[200005];
int main(){
int n;
scanf("%d",&n);
long long val=0;
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
if(i!=1){
val+=max(a[i-1],a[i]);
}
}
printf("%lld",val);
return 0;
}
考完之后我思考了一下,感觉没必要用数组把这个数据存起来,只需要比较前后两个数,那么给这两个数搞一个会变化的变量就可以了。所以我很快又写了一个类似的代码,在贴题目的那个网站里测试AC了。
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
scanf("%d",&n);
long long val=0,x=0,y=0;
for(int i=1;i<=n;i++){
scanf("%lld",&y);
if(i==1){
x=y;
}else{
val+=max(x,y);
x=y;
}
}
printf("%lld",val);
return 0;
}