
ACM问题 为什么的代码老是错? 求大牛改正
题目网址http://acm.bupt.edu.cn/onlinejudge/newoj/showProblem/show_problem.php?problem_id=...
题目网址http://acm.bupt.edu.cn/onlinejudge/newoj/showProblem/show_problem.php?problem_id=330
我的代码:
int v[MAXN];
int main(){
int n,i;
unsigned long long ans;
while(scanf("%d",&n)!=EOF){
for(i=0;i<n;i++)
scanf("%d",&v[i]);
sort(v,v+n);
ans=0;
for(i=0;i<n/2;i++)
ans+=(n-2*i-1)*(v[n-i-1]-v[i]);
cout<<ans*2<<endl;
}
return 0;
} 展开
我的代码:
int v[MAXN];
int main(){
int n,i;
unsigned long long ans;
while(scanf("%d",&n)!=EOF){
for(i=0;i<n;i++)
scanf("%d",&v[i]);
sort(v,v+n);
ans=0;
for(i=0;i<n/2;i++)
ans+=(n-2*i-1)*(v[n-i-1]-v[i]);
cout<<ans*2<<endl;
}
return 0;
} 展开
1个回答
展开全部
你这样不对吧
3
100 200 700
这个数据你就不对
/*
第xi个点到其他xj点距离之和为
xi-x1+xi-x2+xi-x3+...+xi-x[i-1]+xi-x[i+1]+...+xi-x[n-1]+x[i]-xi-x[n]
=(n-1)*x[i]-(x1+x2+x3+x4+...+x[i-1]+x[i+1]+..+x[n-1]+x[n])
这样就可以有O(N)的算法了
*/
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
const int MAXN=1000000;
typedef long long lld;
//typedef __int64 lld;
lld v[MAXN];//好像是要定义64位才行,你的代码我交了一下,没有改对.这里要定义64位才行
int main(){
int n,i;
lld ans,tmp,end;
while(scanf("%d",&n)!=EOF){
end=0;
for(i=0;i<n;i++)
{
scanf("%d",&v[i]);
end+=v[i];
}
sort(v,v+n);
ans=0;
tmp=0;
for(i=0;i<n;i++)
{
end-=v[i];
ans+=i*v[i]-tmp;
ans+=end-(n-i-1)*v[i];
tmp+=v[i];
}
//printf("%I64d\n",ans);
printf("%lld\n",ans);
}
return 0;
}
3
100 200 700
这个数据你就不对
/*
第xi个点到其他xj点距离之和为
xi-x1+xi-x2+xi-x3+...+xi-x[i-1]+xi-x[i+1]+...+xi-x[n-1]+x[i]-xi-x[n]
=(n-1)*x[i]-(x1+x2+x3+x4+...+x[i-1]+x[i+1]+..+x[n-1]+x[n])
这样就可以有O(N)的算法了
*/
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
const int MAXN=1000000;
typedef long long lld;
//typedef __int64 lld;
lld v[MAXN];//好像是要定义64位才行,你的代码我交了一下,没有改对.这里要定义64位才行
int main(){
int n,i;
lld ans,tmp,end;
while(scanf("%d",&n)!=EOF){
end=0;
for(i=0;i<n;i++)
{
scanf("%d",&v[i]);
end+=v[i];
}
sort(v,v+n);
ans=0;
tmp=0;
for(i=0;i<n;i++)
{
end-=v[i];
ans+=i*v[i]-tmp;
ans+=end-(n-i-1)*v[i];
tmp+=v[i];
}
//printf("%I64d\n",ans);
printf("%lld\n",ans);
}
return 0;
}

2025-02-13 广告
关于CRC 02016C,作为希安斯贸易(上海)有限公司的一员,我们深知其重要性。CRC 02016C可能指代某一特定产品型号或内部编码,在公司业务流程中占据关键位置。我们致力于确保每一件产品的品质与性能均符合高标准,CRC 02016C也...
点击进入详情页
本回答由希安斯提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询