def get_input():     n = int(input())     values = [int(i) for i in input().split()]     return n, values def main():     n, values = get_input()     if n < 1 or n > 100:         return     values.insert(0, 0)     count = 0     for i in range(1, n+1):         if 2*i+1 > n:             break         while values[i] > 0 or values[2*i] > 0 or values[2*i+1] > 0:             if values[2*i+1] > 0:                 values[2*i+1] -= 1             if values[i] > 0:                 values[i] -= 1             if values[2*i] > 0:                 values[2*i] -= 1             count += 1     count += sum(values)     print(count) main() 36% 这里有一个毛病,就是当你打到第i个时,怎么做出决策。代码里写的是,必须将2*i和2*i+1位置的数打完,再继续往后走。后来,lz又想到可以判断2*i和2*i+1是否超过一半了,如果超过一半,则必须将其打完,如果没有超过一半可以考虑不打完。。当然,现在也没办法验证了。溜了溜了。。。
点赞 评论

相关推荐

一天代码十万三:这个学历有中大厂实习也是0面,没办法,斩杀线是这样的
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务