#P1485. 2024.9.11-秋招(留学生)-第1题-小塔的机房
-
ID: 115
Type: Default
1000ms
256MiB
Tried: 716
Accepted: 100
Difficulty: 5
Uploaded By:
TaZi
Tags>模拟
2024.9.11-秋招(留学生)-第1题-小塔的机房
题目内容
机房运行了K个计算节点,每个节点当前负载数为T,每个节点的CPU核心数为C,一个CPU核心的最大负载数为200,节点总负载数=节点CPU核心数∗200,节点的CPU负载-节点当前负载数/节点总负载数。节点宕机在机房是经常发生的事,因此要设计一种算法将宕机节点的负载均衡地迁移到负载低的节点,使各节点的CPU负载保持一致,给定右机节点的负载数N,求每个计算节点应该新增的负载数。 备注:1.如果宕机节点的负载数超出了所有节点总负载数,不进行重新调度,则每个节点新增的任务数为0。
2.如果宕机节点的负载数没有超出所有节点总负载数,输入能够保证最终分配完全均衡,即分配后各个计算节点的CPU负载保持相等,精度不低于0.001。
输入描述
宕机节点的负载数N[1,1000000]
计算节点的台数K[1,500]
每个节点的核心数C[1,1000]
每个节点当前的负载数T[1,10000]
输出描述
每个节点应该新增的负载数。
样例1
输入
1180
3
45 28 45
6750 4200 6750
输出
450 280 450
说明
宕机节点上有1180个负载待迁移,计算节点有3个,CPU核心数分别为45、28、45,当前负载分别为6750、4200、6750。
三个节点分别迁移450、280、450个负载后,节点的CPU负载分别为(450+6750)/(45×200)=0.8、(280+4200)/(28×200)=0.8、(450+6750)/(45×200)=0.8,所以返回了450 280 450。
样例2
输入
500
3
2 2 2
200 300 400
输出
0 0 0
说明
宕机节点上有500个负载待迁移,计算节点有3个,每个节点有2个核心各个节点分别有200个,300个、400个负载。第1个计算节点还能增加200个负载,第2个计算节点还能增加100个负载,第3个计算节点无法增加负载,3个计算总共能增加的负载为300,小于500,因此不进行重新调度,返回0 0 0。
通知
扫码备注华为交流群~期待您的到来
- 湘ICP备2023007293号
- Worker 0, 32ms
- Powered by Hydro v4.14.1 Community