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是否超过一半了,如果超过一半,则必须将其打完,如果没有超过一半可以考虑不打完。。当然,现在也没办法验证了。溜了溜了。。。
点赞 评论

相关推荐

被普调的六边形战士很高大:项目经历貌似和专业或者求职方向没大关系?
点赞 评论 收藏
分享
03-29 12:10
门头沟学院 C++
挣K存W养DOG:散漫消极者淘汰,一眼坑爹。实习几个月转正的时候说你加班太少,能力还行态度不够积极裁了,马上老实。
点赞 评论 收藏
分享
牛客网
牛客企业服务