zoukankan      html  css  js  c++  java
  • b_al_小强吃烧饼(模型脱离dp)

    小强暑假在烧饼铺打工,作为一名打工仔,他干活非常卖力。这不,店里举办了一个烧饼大赛,冠军是烧饼吃的最多的人!
    老板将烧饼摆在一排的n个盘子上,其中第i个盘子中有Si个烧饼,但是对于一次吃烧饼操作,
    参赛者每次选择1到n的某个整数x,将1,2......,x-1,x盘子中里的烧饼都吃掉一个,
    当然,如果1到x的某个盘子里没有烧饼了,那么这个x不能被选。
    小强作为这次比赛的第一个挑战者,请你告诉他,假如他胃无限大的情况,能吃掉最多多少烧饼?

    第一行一个整数n表示盘子的个数。第二行n个整数Si表示盘子i里最初的烧饼个数。
    1 <= n <= 10^6
    1 <= Si <=10^9

    5 6 3 7 2 4
    20
    

    对于当前位置 x,我们能吃的个数取决于 0...x-1 这些位置上的烧饼个数中的最小值
    比如 2,3,4,1000,如果小强每次都选择在x=3位置开始,我们能吃的只有2个,对于其它位置也是如此

    def solve(n, S):
        f, ans = [0] * n,0
        for i in range(0, n):
            if i == 0: f[i] = S[i]
            else: f[i] = min(f[i-1], S[i])
            ans += f[i]
        return ans
    S = list(map(int,input().split(" ")))
    print(solve(len(S), S))
    
  • 相关阅读:
    day14
    day13
    装饰器小题
    day12
    tes..
    1380 没有上司的舞会
    算法模板——KMP字符串匹配
    算法模板——Tarjan强连通分量
    3211: 花神游历各国
    1131: [POI2008]Sta
  • 原文地址:https://www.cnblogs.com/wdt1/p/14491165.html
Copyright © 2011-2022 走看看