BZOJ2697: 特技飞行

BZOJ2697: 特技飞行

https://lydsy.com/JudgeOnline/problem.php?id=2697

分析:

  • 每个特技选两个就够了。
  • 贪心地选最大的放在最外面即可。

代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cstdlib>
#include <set>
#include <vector>
#include <cmath>
using namespace std;
#define N 1500
typedef long long ll;
int n,K,a[N];
int main() {
	scanf("%d%d",&n,&K);
	int i;
	ll ans=0;
	for(i=1;i<=K;i++) scanf("%d",&a[i]);
	sort(a+1,a+K+1);
	reverse(a+1,a+K+1);
	for(i=1;i<=n/2&&i<=K;i++) {
		ans+=(n-(2*i-1))*a[i];
	}
	printf("%lld\n",ans);
}
posted @ 2019-01-01 19:31  fcwww  阅读(102)  评论(0编辑  收藏  举报