http://poj.org/problem?id=2231
在一个数轴上给出n个点。求这n个点 每个点到其他点距离的和的和,很简单的规律题,不难发现,每2个点之间的长度 都对最终答案贡献2次。
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
long long int a[11111];
long long int ans;
int main(){
int n;
while(cin>>n)
{
//memset(ans,0,sizeof(ans));
int i;
for(i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+1+n);
int j;
long long int ans=0;
for(i=1;i<=n;i++)
{
for(j=i+1;j<=n;j++)
{
ans+=(a[j]-a[i])*2;
}
}
cout<<ans<<endl;
}
return 0;
}

本文介绍了一种求解数轴上多个点间距离和的简单算法。通过将点排序并计算每两点间的距离贡献,得出所有点两两之间距离之和。此问题常见于编程竞赛,核心在于理解每段距离在总和中被计算两次。
739

被折叠的 条评论
为什么被折叠?



