博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
codeforces 609C Load Balancing
阅读量:6678 次
发布时间:2019-06-25

本文共 2583 字,大约阅读时间需要 8 分钟。

C. Load Balancing
 
time limit per test
 
 
 
2 seconds
memory limit per test 
256 megabytes
input
standard input
output
standard output

In the school computer room there are n servers which are responsible for processing several computing tasks. You know the number of scheduled tasks for each server: there are mi tasks assigned to the i-th server.

In order to balance the load for each server, you want to reassign some tasks to make the difference between the most loaded server and the least loaded server as small as possible. In other words you want to minimize expression ma - mb, where a is the most loaded server and b is the least loaded one.

In one second you can reassign a single task. Thus in one second you can choose any pair of servers and move a single task from one server to another.

Write a program to find the minimum number of seconds needed to balance the load of servers.

Input

The first line contains positive number n (1 ≤ n ≤ 105) — the number of the servers.

The second line contains the sequence of non-negative integers m1, m2, ..., mn (0 ≤ mi ≤ 2·104), where mi is the number of tasks assigned to the i-th server.

Output

Print the minimum number of seconds required to balance the load.

Sample test(s)
input
2 1 6
output
2
input
7 10 11 10 11 10 11 11
output
0
input
5 1 2 3 4 5
output
3
Note

In the first example two seconds are needed. In each second, a single task from server #2 should be moved to server #1. After two seconds there should be 3 tasks on server #1 and 4 tasks on server #2.

In the second example the load is already balanced.

A possible sequence of task movements for the third example is:

  1. move a task from server #4 to server #1 (the sequence m becomes: 2 2 3 3 5);
  2. then move task from server #5 to server #1 (the sequence m becomes: 3 2 3 3 4);
  3. then move task from server #5 to server #2 (the sequence m becomes: 3 3 3 3 3).

The above sequence is one of several possible ways to balance the load of servers in three seconds.

答案是最大相差1,有多少取决于余数r。平均数下去整得到ave,小的转化为ave,大的r个转化为ave+1。

嘛,好久没玩了,成为cin,cout选手,手速大大(xiaoxiao)提高。

#include
using namespace std;typedef long long ll;const int N = 1e5;int m[N];//#define LOCALint main(){#ifdef LOCAL freopen("in.txt","r",stdin);#endif ios::sync_with_stdio(false); cin.tie(nullptr); int n, i, s = 0, r, c = 0; cin>>n; for(i = 0; i < n; i++) cin>>m[i], s += m[i]; r = s % n; s /= n; nth_element(m,m+n-r,m+n); for(i = 0; i < n - r; i++) c += abs(s-m[i]); for(i = n-r; i < n; i++) c += abs(s+1-m[i]); cout<

 

转载于:https://www.cnblogs.com/jerryRey/p/5071484.html

你可能感兴趣的文章
《Android和PHP开发最佳实践》一1.4 小结
查看>>
光伏发电与“鸭子曲线”
查看>>
博鳌直击 | 业界大佬激辩金融科技:互联网金融并不是翻牌就可以叫Fintech
查看>>
Amdocs将成为AT&T ECOMP平台的集成商
查看>>
网络安全问题不断增多 全民安全意识如何提升
查看>>
Linux基金会宣布微内核项目Zephyr
查看>>
企业级市场移动办公率先热战
查看>>
打开电邮附件要小心:新JavaScript勒索工具加密文件无解
查看>>
当经济预测遇到大数据,会产生什么样的火花?
查看>>
行业渠道再洗牌,运营商或重掌行业话语权
查看>>
英特尔驱动边缘计算产业联盟国际化 拓展计算边界
查看>>
网络电话为什么一直是“邻家的电话”?
查看>>
评估公共云存储提供商的四个标准
查看>>
由世纪互联运营的 Power BI 受用户喜爱的六大理由
查看>>
迪斯尼正研究使用RFID技术,增强人与物之间的互动
查看>>
热带地区数据中心需要太阳能发电,而不是自然冷却
查看>>
炙手可热的威胁情报!飞塔已应用了15年
查看>>
Ruckus提高了Brocade 2016年Q4盈收
查看>>
2015年度互联网安全报告发布 移动支付成重灾区
查看>>
数百亿美元半导体设备投资 如何避免被海外大厂瓜分?
查看>>