很抱歉这个简短的标题,SO不会让我发布任何其他内容。
我已经为问题PHYSICS(http://www.codechef.com/problems/PHYSICS)编写了以下解决方案,它通过了提供的简单测试用例,但是在所有测试用例中提交了WA(错误答案)的结果。
import numbers
T = input()
for t in xrange(T):
N, F = [int(i) for i in raw_input().split()]
heights = [(long(i), False) for i in raw_input().split()]
heights.sort()
heights.reverse()
ways = 0
for i, h in enumerate(heights):
height = h[0]
used = h[1]
if used:
continue
j = 0
while True:
force = F ** j
if force > height:
break
bounce = height / force
if isinstance(bounce, numbers.Integral):
try:
if len(heights) > i:
index = heights.index((bounce, False), i + 1)
if index != i:
heights[index] = (bounce, True)
ways += 1
break
except ValueError:
pass
finally:
j += 1
print ways
这就是我在我的解决方案中所做的事情:
帮助我发现此解决方案可能失败的情况以及修复。
答案 0 :(得分:0)
我认为你的问题有点不对劲。您可以使用多于一对的孩子,唯一的特殊情况是两个孩子的身高相同。因此,您可以稍微复杂一点。您是否打印了示例案例2的正确答案?您似乎只计算一对4
,而事实上它只参与两对。