我的贪心怎么错了?
查看原帖
我的贪心怎么错了?
463562
Dreamerlee✅楼主2021/3/23 17:04

蒟蒻的贪心怎么错了,只ac了前5个点

但我感觉没毛病

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int n, a[310], head = 1, tail, ans;
bool cmp(int a, int b)
{
	return a > b;
}
int main()
{
	cin >> n;
	for (int i = 1; i <= n; i++)
		cin >> a[i];
	tail = n;
	sort(a + 1, a + n + 1,cmp);//逆序排序一下
	ans += a[1] * a[1];//最大的在第一个,从地上0起跳到最大高度的石头
	while (head < tail)//最后相等就退出,即便相等的算上了,也是ans+0,因为相等的数相减为0
	{
		ans += (a[head] - a[tail]) * (a[head] - a[tail]);//每次都加上落差最大的,即两端的差平方
		++head;
		ans += (a[head] - a[tail]) * (a[head] - a[tail]);
		--tail;
	}
	cout << ans;
	return 0;
}
```cpp
2021/3/23 17:04
加载中...