P4995 跳跳!
题目
题目大概的意思就是给出你n个石头高度 , 让你求消耗体力最大是多少
思路
- ans += 最大的数
- 如果当前位置是最大的 就找最小的
代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
typedef long long ll;
const int N = 1e6 + 10;
int a[N], b[N];
bool cmp (int a, int b) {
return a > b;
}
signed main ()
{
ios::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL);
int n; cin >> n;
for (int i = 0 ; i < n ; i ++) cin >> a[i];
sort(a, a + n, cmp);
int ans = 0;
ans += a[0] * a[0];
int l = 1 , r = n - 1, flag = 0, now = 0;
for (int i = 1 ; i < n ; i ++) {
if (flag == 0) {
ans += (a[r] - a[now]) * (a[r] - a[now]);
now = r;
r --;
flag = 1;
}
else {
ans += (a[l] - a[now]) * (a[l] - a[now]);
now = l;
l ++;
flag = 0;
}
}
cout << ans << endl;
}