UVA 11300 Spreading the Wealth
来源:互联网 发布:淘宝多久删除炒作评价 编辑:程序博客网 时间:2024/06/01 23:08
UVA - 11300
分金币问题,大白书上的一道题,具体的过程第一次看的感觉很神奇,后来边看边想,确实这个中位数求的很有道理。
这道题通过建模列n个方程,可以抽象成给定数轴上n个点,在数轴上的所有点中,中位数离所有点的距离之和最小。
想了想,假设最优点向中位数点左侧移动d距离,那么原来在左边的点距离之和减去a个d,原来在右边的点距离之和加上a个d.总距离不变。但是中位数和最优点之间的距离变大。所以当最优点就是中位数的时候,最优点和中位数的距离为0.达到最优。
注意这题要用long long和%lld.我用int没过,用%I64d也没过。
#include<stdio.h>#include<algorithm>#define N 1000005using namespace std;long long a[N],b[N];int n;int main(){ while(scanf("%d",&n)>0) { long long sum=0; for(int i=1;i<=n;i++) { scanf("%lld",&b[i]); sum+=b[i]; } long long m=sum/n; a[0]=0; for(int i=1;i<n;i++) a[i]=a[i-1]+b[i]-m; sort(a,a+n); long long middle=a[n/2],ans=0; for(int i=0;i<n;i++) ans+=abs(middle-a[i]); printf("%lld\n",ans); } return 0;}
0 0
- Uva - 11300 - Spreading the Wealth
- uva 11300 - Spreading the Wealth
- Uva-11300-Spreading the Wealth
- UVA 11300 Spreading the Wealth
- UVa 11300 - Spreading the Wealth
- uva 11300 Spreading the Wealth
- UVA 11300 Spreading the Wealth
- uva 11300 Spreading the wealth
- UVA - 11300 Spreading the Wealth
- UVa 11300 Spreading the Wealth
- UVA 11300 Spreading the Wealth
- UVa 11300 Spreading the Wealth
- UVA 11300 Spreading the Wealth
- UVA 11300 - Spreading the Wealth
- UVA - 11300 Spreading the Wealth
- UVA 11300-Spreading the Wealth
- UVA 11300 Spreading the Wealth
- UVA 11300 Spreading the Wealth
- Windows镜像安装时选择系统版本
- IOS 打印素数与计算天数
- 详解如何实现定义一个参数个数可变的函数
- 6、数组
- 不允许SAM账户的匿名枚举
- UVA 11300 Spreading the Wealth
- Android Binder机制学习计划
- [Python标准库]calendar——处理日期
- python有关的书签
- 85. php 绘图体系
- Java RMI 简介及其优劣势总结
- 1021. 个位数统计 (15)
- Windows获取分区的UUID
- UITextField右边设置图片,以及UITextField全解