[TYVJ-1021] 遞推

這道題如果用暴力搜索做就太沒有水平了,並且可能超時。

解答此題後的心得是:如果預感數據很大,就__int64,爲此我貢獻了一個WA

/*
 * tyvj-1021
 * mike-w
 * 2012-9-27
 */
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define MAXN  12345

__int64 f[MAXN];
__int64 g[MAXN];
int N;

int comp(const void *e1, const void *e2)
{
	return (int)(*((__int64*)e1) - *((__int64*)e2));
}

int main(void)
{
	int i;
	unsigned __int64 sum=0;

	scanf("%d", &N);
	for(i=0; i<N; i++)
		scanf("%I64d", f+i);
	qsort(f, N, sizeof(__int64), comp);
	for(i=1; i<N; i++)
		g[i]=g[i-1]+i*(f[i]-f[i-1]);
	for(i=1; i<N; i++)
		sum+=g[i];
	printf("%I64d\n", sum*2);
	return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章