【发布时间】:2018-04-29 19:11:26
【问题描述】:
雷神正在玩一个有 N 个级别和 M 种可用武器的游戏。级别编号从 0 到 N-1,武器编号从 0 到 M-1。他可以以任何顺序清除这些级别。在每个级别中,需要这些 M 武器的某些子集才能通过此级别。如果在特定关卡中,他需要购买 x 个新武器,他将为此支付 x^2 个硬币。另请注意,他可以将他目前拥有的所有武器带到下一个级别。最初,他没有武器。你能找出他通关所有关卡所需的最低金币吗?
输入格式
输入的第一行包含 2 个空格分隔的整数:
N = 游戏中的关卡数
M = 武器种类的数量
N 行紧随其后。这些行的第i行包含一个长度为M的二进制字符串。如果这个字符串的第j个字符是1,这意味着我们需要一个类型为j的武器来清除第i个级别。
约束
1
1
输出格式
打印一个整数,它是问题的答案。
示例测试用例 1
输入
1 4
0101
输出
4
解释
这个游戏只有一个关卡。我们需要 2 种武器 - 1 和 3。因为一开始,Thor 没有武器,他必须购买这些武器,这将花费他 2^2 = 4 个硬币。
示例测试用例 2
输入
3 3
111
001
010
输出
3
解释
这个游戏有 3 个关卡。第 0 级 (111) 需要所有 3 种类型的武器。 1级(001)只需要2型武器。2级只需要1型武器。如果我们按照给定的顺序(0-1-2)通关,总成本= 3^2 + 0^2 + 0^2 = 9 个硬币。如果我们按照 1-2-0 的顺序通关,则需要花费 = 1^2 + 1^2 + 1^2 = 3 个硬币,这是最优的方式。
【问题讨论】:
-
你有什么问题?
-
这不是免费的家庭作业服务。请向我们展示您迄今为止为解决问题所做的尝试,以及您遇到问题的原因。 idownvotedbecau.se/noattempt
-
@Ravi Manna - 你有问题的链接吗?我有一个解决方案,想在此处发布之前对其进行测试。
-
@zenwraight - 我在一个网站上阅读了这个问题并尝试从那里解决,但是不确定要采取的方法。我尝试使用汉明距离,但遇到了一些测试用例。任何帮助将不胜感激。
-
stackoverflow.com/q/49772462/9254539 的完全相同的副本。但无法标记,因为我已经标记了这篇文章过于宽泛,因为它是一个家庭作业/竞争性编程问题转储。
标签: algorithm combinations hamming-distance