Description
约翰的邻居鲍勃控告约翰家的牛们太会叫.约翰的N(1≤N≤10000)只牛在一维的草场上的不同地点吃着草.她们都
是些爱说闲话的奶牛,每一只同时与其他N-1只牛聊着天.一个对话的进行,需要两只牛都按照和她们间距离等大
的音量吼叫,因此草场上存在着N(N-1)/2个声音. 请计算这些音量的和.
Input
Line 1: N * Lines 2…N+1: The location of each cow (in the range 0…1,000,000,000).
第1行输入N,接下来输入N个整数,表示一只牛所在的位置.
Output
一个整数,表示总音量.
Sample Input
5
1
5
3
2
4
Sample Output
40
HINT
这题我TLE了n次,终于找到了方法,就是代数法
我先将表面的代数式子写下来,再化简,步骤在下面
a1>a2>a3>a4>a5
[(a1 - a2) + (a1 - a3) + (a1 - a4) + (a1 - a5) + (a2 - a3) + (a2 - a4) + (a2 - a5) + (a3 - a4) + (a3 - a5) + (a4 - a5)] * 2
[(a1 * 4+a2 * 3 + a3 * 2 + a4 * 1) - (a2 * 1) - (a3 * 2) - (a4 * 3) - (a5 * 4)] *2
[a1 * 4 + a2 * 2 + a3 * 0 + a4 * (-2) + a5 * (-4)] *2
发现规律没有!
规律不多说了,之后自己可以试试,下面是TLE的代码。
#include <bits/stdc++.h>
using namespace std;
long long b[10001];