zoukankan      html  css  js  c++  java
  • 弱爆了的Candies

    题目出处

    题目描述:

    n个小朋友坐成一排,每个小朋友有一个数表示他的表现(数字越大表现越好)。老师要给每个小朋友发至少1颗糖,相邻的两个小朋友,得分较高的小朋友必须得到更多的糖,问:老师至少需要给出多少颗糖

    我的解法:

    开两个数组c,c1。分别表示到这个数字的连续上升的序列长度,和连续下降的长度,那么发给第i个小朋友的糖果数量就是max(c[i],c1[i])

    因此有挫逼代码如下:

     1 def Solve():
     2     n = int(input())
     3     l = []
     4     for i in range(n):
     5         x = int(input())
     6         l.append(x)
     7     c = [1 for i in range(0,n)]
     8     for i in range(1,n):
     9         if ( l[i] > l[i-1] ):
    10             c[i] = c[i-1]+1
    11     c1 = [1 for i in range(0,n)]
    12     i = n-2
    13     while ( i >= 0 ):
    14         if ( l[i] > l[i+1] ):
    15             c1[i] = c1[i+1]+1
    16         i -= 1
    17     ans = 0
    18     for i in range(n):
    19         if ( c[i] > c1[i] ):
    20             ans += c[i]
    21         else:
    22             ans += c1[i]
    23     print(ans)
    24 
    25 Solve()
    弱爆了

    坐等空间复杂的o(1)做法

  • 相关阅读:
    clip属性,截取你想要显示的图片
    select背景灰色
    [转]ShowModal() = mrOk
    【转】Delphi-Unit文件结构
    析构方法
    [转]Delphi 7连接MySql /MariaDB
    MySQL/Mariadb遇见的问题
    更换数据库
    FlameRobin
    FireBird初使用
  • 原文地址:https://www.cnblogs.com/qoshi/p/3333424.html
Copyright © 2011-2022 走看看