UVA 11300 Spreading the Wealth(思维题)

来源:互联网 发布:c语言用什么软件编程 编辑:程序博客网 时间:2024/05/06 21:57

这题把一个一般问题转成了一个几何问题,思路参加白书第三题。

////  main.cpp//  Richard////  Created by 邵金杰 on 16/9/28.//  Copyright © 2016年 邵金杰. All rights reserved.//#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=1000000+100;typedef long long ll;ll a[maxn],c[maxn];ll aabs(ll x) {return x>0?x:-x;}int main(){    int n;    while(scanf("%d",&n)!=EOF)    {        ll tot=0;        for(int i=1;i<=n;i++) {scanf("%lld",&a[i]);tot+=a[i];}        ll M=tot/n;        c[0]=0;        for(int i=1;i<n;i++) c[i]=c[i-1]+a[i]-M;        sort(c,c+n);        ll x=c[n/2];        ll ans=0;        for(int i=0;i<n;i++) ans+=aabs(x-c[i]);        printf("%lld\n",ans);    }    return 0;}


0 0
原创粉丝点击