CF 672 div2 D

http://codeforces.com/contest/672/problem/D

题目大意:

有n个人,每个人有pi的钱,然后可以由如下操作,每次都可以挑选一个最富有的人,把它的钱给最穷的人。但是如果所有的人的钱都相等,那么就不需要执行该操作,该操作最多执行k次。问,贫富之间最大的差值是多少。

思路:

感觉这道题我是以一个奇怪的姿势过了。。。

首先我们sort一下每个人的钱,然后并且统计有几个人的钱数相同。然后再分别从最小的开始加钱和从最大的开始扣钱,这两种每个都计算一次,看看k次操作,以后最小的和最大的人的钱能是多少。

然后可能出现以下的情况

情况1:

右往左扣钱以后的val仍然>=左往右加钱的

如果是大于,那么就是两者之差

如果是等于,如果任意一段的转移的k大于0,那么之间的差值就是1(请仔细想一下)

情况2:

右往左扣钱以后的val<左往右加钱的,如果p的总钱数%n=0,说明能均分,即为0.否则为1.

原文地址:https://www.cnblogs.com/heimao5027/p/5565434.html