def max_file_size:import mathN = int(input)files = [int(input) for _ in range(N)]# 计算每个文件的块数和实际占用大小blocks = actual_sizes = for size in files:block = math.ceil(size / 512)actual_size = block * 512blocks.append(block)actual_sizes.append(size)total_blocks = 2880 # 1474560 / 512# 初始化动态规划表dp = [0] * (total_blocks + 1)for i in range(N):block = blocks[i]size = actual_sizes[i]for j in range(total_blocks, block - 1, -1):if dp[j - block] + size > dp[j]:dp[j] = dp[j - block] + sizeprint(dp[total_blocks])max_file_size文件块计算:每个文件的大小为Si字节,其在软盘上占用的块数为 ceil(Si / 512)。每个块占用512字节,因此文件在软盘上占用的总空间为 ceil(Si / 512) * 512 字节。动态规划:这是一个典型的0-1背包问题,其中背包的容量是软盘的块数 1474560 / 512 = 2880 块。我们需要选择一些文件,使得它们的总块数不超过2880,同时它们的总大小尽可能大。摘要:def max_file_size:import mathN = int(input)files = [int(input) for _ in range(N)]# 计算每个文件的块数和实际占用大小blocks = actual_sizes = for siz
来源:小杨看科技