P4995 跳跳!

文章描述了一个脚变绿的人想象自己是青蛙,计划在朋友面前展示跳跃技术。通过从最高的石头开始,跳跃到最低的石头,然后依次跳跃回高处,他构思了一段C++代码来计算这一过程中的总距离。代码中涉及数组排序和距离计算,最终输出总距离。
摘要由CSDN通过智能技术生成

今天早上起来,发现自己的脚变成了绿的…
我变成了青蛙!
怪离谱的:
在这里插入图片描述
今天下午f同学约我出去玩,好耶ヽ(✿゚▽゚)ノ
那么我肯定要在他面前展现我跳跃的技术
让我想想嗷
为了展示出我的技术
那么
我肯定要每次跳跃消耗的体力值最多
一开始是从地面开始跳
那么我肯定要挑一个最高的作为起始点
也就是说第一个必定是这些石头里面最高的
有思路了!
那么接下来我该怎么做呢…
再跳向这些石头最矮的
也就是:
假如我们有h1,h2,h3,h4,h5…hn n个石头
并且h1>h2…>hn
那么我就需要跳到h1再跳到hn再跳到h2再跳到hn-1就可以完美的展现出我的技术了!
那么用代码实现就是这样的:

#include<bits/stdc++.h>
using namespace std;
long long n;
long long h[301];
void sp(long long&a,long long&b){
	int c=a;a=b;b=c;return;
}
long long jl(int a,int b){
	return((a-b)*(a-b));
}
int main(){
	scanf("%lld",&n);
	for(int i=1;i<=n;++i)scanf("%lld",h+i);
	sort(h+1,h+n+1);
	long long l=0,r=n;
	long long J=0;
	while(l<r){
		J+=jl(h[r],h[l]);
		++l;
		J+=jl(h[l],h[r]);
		--r;
	}
	printf("%lld",J);
	return 0;
}

哎嘿,不亏是我的蛙头
一开始没开long long…差点去世

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值