POJ 2231 Moo Volume(规律)

POJ2231

题意就是计算任意两个牛之间的距离总和,暴力的话是会超时的.

所以,优化呢。。。没找到方法,无奈了,看了下题解,各种找规律啊,我去,我可是一点规律没发现啊,一组样例就可以,找规律这方面能力还是太弱啊

<span style="font-size:14px;">/*
POJ2231 Moo Volume
完全各种规律啊,好吊的样子,我找规律的能力有待提升啊,
其实也不是那么难找,毕竟高中的数学训练底子还是有点的
看样例(提前排序)
0~5     对应的是1 2 3 4 5
然后 a[i] 到 a[j] 的距离,我们可以只计算单向的距离,然后加和以后再乘以2
那么总和就是2*sum
sum+=(n-i-1)*(a[n-i-1]-a[i])
*/
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;

long long a[10005];

int main()
{
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
        scanf("%lld",&a[i]);
    sort(a,a+n);
    long long sum=0;
    for(int i=0;i<n;i++)
    {
        sum+=(n-i-1)*(a[n-i-1]-a[i]);
    }
    printf("%lld\n",sum*2);
    return 0;
}
</span>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值