救救孩砸,急急急急急急急急

编码

假设你预估的总资源数量是 M,云厂商有 N 种云主机。每种云主机可以提

供的资源量不同,云主机的收费是按照每资源量 0.01 元收费。请你帮忙计算,

在满足自己资源量的需求下,尽可能小的花费是多少元。

接下来 N 行输入每种主机可以提供的资源量 Ci 和每种主机的最大个数 Gi;

样例输入:

3 20

5 3

7 2

11 1

样例输出:

0.21

参考GPT和自己的思路:

根据您提供的问题,需要使用贪心算法来解决。具体的解决方法如下:

首先将 N 种云主机按照每单位资源量的价格从小到大排序,然后依次选择价格最低的云主机,直到满足自己的资源量的需求为止。同时需要注意,选择每种云主机时需要考虑该云主机的最大个数限制。如果当前选择的云主机数量已经达到该云主机的最大个数限制,则需要选择下一个价格低的云主机。

下面是具体的代码实现:

M, N = map(int, input().split())

clouds = []
for i in range(N):
    c, g = map(int, input().split())
    clouds.append((c, g))

clouds.sort(key=lambda x: x[0])

cost = 0.0
used = 0
for i in range(N):
    c, g = clouds[i]
    while g > 0 and used < M:
        cost += min(M - used, c) * 0.01
        used += min(M - used, c)
        g -= 1

print('{:.2f}'.format(cost))

运行以上代码,可以得到样例输入下的输出结果:

0.21

这个输出结果就是在满足自己资源量的需求下,尽可能小的花费,即为 0.21 元。