#P1472. 2024.9.25-秋招(留学生)-第3题-磁盘的写入策略

2024.9.25-秋招(留学生)-第3题-磁盘的写入策略

塔子哥的提醒:

本题数据范围有误导性!本题在笔试过程中使用dfs回溯法就能过所有数据,所以官方后台数据应该都是在很小的范围内。

题目内容

存储软件负责编程按照某写入策略,每次可向单块磁盘写入4KB4KB数据,每写入nn次可随机分配一次写入策略,存储软件的写入策略分为33种:

策略一: 轮循写入:比如存在33块硬盘001122

n=2n=2,采用该策略写入数据时,写入顺序为00->11

n=5n=5,采用该策略写入数据时,写入顺序为00->11->22->00->11

策略二: 优先写入剩余空间高的磁盘(剩余空间相同时,先写入序号小的硬盘),比如存在33块硬盘001122,空间容量分别为12KB12KB16KB16KB24KB24KB

n=2n=2,采用该策略写入数据时,写入顺序为22->22

n=5n=5,采用该策略写入数据时,写入顺序为22->22->11->22->00

策略三: 按比例轮循写入:比如存在33块硬盘001122

n=3n=3,采用该策略写入数据时,数据写入顺序为00->11->11

n=6n=6,采用该策略写入数据时,数据写入顺序为00->11->11->22->22->22

切换写入策略时,可切换不同的策略也可以和上次策略保持一致,切换策略后不继承上次写入策略的执行结果,如:33块硬盘001122,写入比例为1:1:21:1:2,待写入的数据量有24KB24KB

n=2n=2,一直通过策略11写入数据,写入顺序为(策略1100->11->(策略1100->11->(策略1100->11

n=2n=2,一直通过策略33写入数据,写入顺序为(策略3300->11->(策略3300->11->(策略3300->11

n=5n=5,一直通过策略11写入数据,写入顺序为(策略1100->11->22->00->11->(策略1100

n=5n=5,一直通过策略33写入数据,写入顺序为(策略3300->11->22->22->00->(策略3300

现在有一批数据要写入初始状态为空的硬盘,存在几种写入策略分配使最后硬盘空间的占用率(硬盘空间的占用率=硬盘写入的数据量/硬盘的总容量)保持均衡。

注:

1.如果不存在合适的写入策略分配使最后硬盘空间的占用率保持均衡,则返回00

2.如果存在合适的写入策略,最终的磁盘空间占用率一定是整除的结果,精度>0.000001>0.000001

3.不管是否写入成功,都算一次。例如:

策略是轮循写入,n = 3 , 磁盘是0 , 1 , 2 . 但是1,2都满了。程序还是0,1,2的写,失败了也算数。而不是0.跳过1,2,写0,再跳过1,2,再写0!

输入描述

磁盘的个数[1,200][1,200]

每个磁盘的容量(单位KBKB,空间是44的倍数)[1,10000][1,10000]

磁盘的写入比例[1,1000][1,1000]

待写入的总数据量(单位KBKB,总数据量是44的倍数)[1,1000][1,1000]

nn次切换一次写入策略[1,1000][1,1000]

输出描述

存在几种写入策略分配

样例1

输入

3
64 64 64
1 1 1
12
3

输出

3

说明

总共有3块硬盘,每块硬盘有64KB容量,三块硬盘的

1:1,待写入12KB数据,每3次切换一次写入策略,共

略分配使最后的硬盘空间的占用率保持平衡。

方式1:策略1

方式2:策略2

方式3:策略3

采用3种方式均能保持写入后3块硬盘的空间占用率保

4/64=0.0625

样例2

输入

3
128 64 32
4 2 1
56
7

输出

1

说明