[Usaco2005 Jan]Moo Volume 牛的呼声(C++)

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];
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值