跳跳
P4995 跳跳! - 洛谷 | 计算机科学教育新生态 (luogu)
解题思路
1.为了耗费尽可能多的体力,先从地面跳到最高的石头上
2.从最高的石头跳到最低的石头,再跳到第二高的石头上......以此类推,就可以消耗尽可能多的体力值
3.输出耗费的体力值
注意:消耗的体力值可能超过int的范围
代码
#include<bits/stdc++.h>
using namespace std;
int a[305];//创建数组
int main()
{int n,num=1;long long sum=0;bool flag=1;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];//输入石头的高度 }sort(a+1,a+n+1);//给石头的高度排序 sum+=a[n]*a[n];//从地面跳到最高的石头上 while(num<n)//石头跳完了{sum+=(a[n]-a[num])*(a[n]-a[num]);//体力值if(flag==1){n--;flag=0;}//在高度较低的石头上 else{num++;flag=1;}//在高度较高的石头上 }cout<<sum;//输出耗费的体力值 return 0;
}
跳跳
P4995 跳跳! - 洛谷 | 计算机科学教育新生态 (luogu)
解题思路
1.为了耗费尽可能多的体力,先从地面跳到最高的石头上
2.从最高的石头跳到最低的石头,再跳到第二高的石头上......以此类推,就可以消耗尽可能多的体力值
3.输出耗费的体力值
注意:消耗的体力值可能超过int的范围
代码
#include<bits/stdc++.h>
using namespace std;
int a[305];//创建数组
int main()
{int n,num=1;long long sum=0;bool flag=1;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];//输入石头的高度 }sort(a+1,a+n+1);//给石头的高度排序 sum+=a[n]*a[n];//从地面跳到最高的石头上 while(num<n)//石头跳完了{sum+=(a[n]-a[num])*(a[n]-a[num]);//体力值if(flag==1){n--;flag=0;}//在高度较低的石头上 else{num++;flag=1;}//在高度较高的石头上 }cout<<sum;//输出耗费的体力值 return 0;
}