【Educational Codeforces Round 3 C】【贪心 排序】Load Balancing 最小操作步数使得数字之差尽可能小
来源:互联网 发布:数组转化成json 编辑:程序博客网 时间:2024/06/05 10:07
#include<stdio.h>#include<iostream>#include<string.h>#include<string>#include<ctype.h>#include<math.h>#include<set>#include<map>#include<vector>#include<queue>#include<bitset>#include<algorithm>#include<time.h>using namespace std;void fre(){freopen("c://test//input.in","r",stdin);freopen("c://test//output.out","w",stdout);}#define MS(x,y) memset(x,y,sizeof(x))#define MC(x,y) memcpy(x,y,sizeof(x))#define MP(x,y) make_pair(x,y)#define ls o<<1#define rs o<<1|1typedef long long LL;typedef unsigned long long UL;typedef unsigned int UI;template <class T1,class T2>inline void gmax(T1 &a,T2 b){if(b>a)a=b;}template <class T1,class T2>inline void gmin(T1 &a,T2 b){if(b<a)a=b;}const int N=1e5+10,M=0,Z=1e9+7,ms63=0x3f3f3f3f;int n;LL a[N];int main(){while(~scanf("%d",&n)){LL sum=0;for(int i=1;i<=n;++i)scanf("%lld",&a[i]),sum+=a[i];LL ave=sum/n;int num=sum%n;sort(a+1,a+n+1);LL val=0;for(int i=n;i>n-num;--i)val+=abs(a[i]-(ave+1));for(int i=1;i<=n-num;++i)val+=abs(a[i]-ave);printf("%lld\n",val/2);}return 0;}/*【题意】给你n(1e5)个数a[],我们可以把任一个数拿出1,给与另外任意一个数。这样我们到最后,有一个最大的数ma和一个最小的数mb,我们希望使得ma-mb尽可能小。并且,在实现这个目标的前提下,使得操作的步数尽可能少。【类型】贪心 排序【分析】我们从讨论比较少的地方入手。很显然,ma-mb的值,只可能是两种——0或者1。0:这个时候,显然,操作步数就是∑(a[i]-ave)/21:这个时候,我们最终肯定有一些数(n-sum%n个)变成x,一些数(sum%n个)变成x+1.于是,我们选择让最小的那n-sum%n个数变成x,让最大的那sum%n个数变成x+1就好啦。计数还是总的步长差/2【时间复杂度&&优化】O(n)*/
0 0
- 【Educational Codeforces Round 3 C】【贪心 排序】Load Balancing 最小操作步数使得数字之差尽可能小
- Codeforces Educational Codeforces Round 3 C. Load Balancing(贪心)
- Educational Codeforces Round 3 C. Load Balancing
- Educational Codeforces Round 3 C.Load Balancing(模拟)
- Educational Codeforces Round 3 609C Load Balancing(脑洞)
- 【Educational Codeforces Round 2C】【贪心】最少修改数下得到字典序尽可能小回文串
- 【Codeforces Round 274 (Div 2)B】【贪心】Towers 若干次移数后使得最大差值尽可能小
- codeforces 603 C. Load Balancing 贪心
- 【Codeforces Round 262 (Div 2)C】【二分】浇花使得最小的尽可能大
- 【Educational Codeforces Round 6C】【DP or 贪心】Pearls in a Row n个数分最多区间使得每个区间都有重复数
- Educational Codeforces Round 12(C)贪心
- 【Codeforces Round 335 (Div 2) C】【贪心 脑洞 有趣排序】Sorting Railway Cars 全排列排序可以提前后提后的最小操作数
- Educational Codeforces Round 27 A B 暴力+贪心 C 贪心+排序
- 【Codeforces Round 271 (Div 2)C】【暴力 坐标变换】Captain Marmot 四个点绕中心旋转 最小步数使得构成正方形
- 【Codeforces Round 332 (Div 2)C】【贪心】Day at the Beach 最多区间数划分使得区间排序构成全局排序
- Educational Codeforces Round 15 C 二分+差分数组
- Codeforces 609C Load Balancing
- CodeForces 609C Load Balancing
- Intent详解
- linux笔记
- iOS,UITableView详细介绍之基本使用(一)
- viewpager增加滑动属性
- C,C++宏中#与##的讲解
- 【Educational Codeforces Round 3 C】【贪心 排序】Load Balancing 最小操作步数使得数字之差尽可能小
- C语言undefined behaviour未定义行为
- iOS在Xcode中,文件名后小方框中的A(M或C)代表的意思
- Javascript实现图片预加载【回调函数,多张图片】
- 微信开放平台开发(2) 微信登录
- java面试题100道(81-100)
- Android之自定义ImageView圆形图片
- OC_08_03 通知
- STL_算法_元素计数(count、count_if)