發獎金 貪心

2021-07-26 18:49:46 字數 1308 閱讀 7539

狐進行了一次黑客馬拉松大賽,全公司一共分為了n個組,每組乙個房間排成一排開始比賽,比賽結束後沒有公布成績,但是每個組能夠看到自己相鄰的兩個組裡比自己成績低的組的成績,比賽結束之後要發獎金,以1w為單位,每個組都至少會發1w的獎金,另外,如果乙個組發現自己的獎金沒有高於比自己成績低的組發的獎金,就會不滿意,作為比賽的組織方,根據成績計算出至少需要發多少獎金才能讓所有的組滿意。

輸入描述:

每組資料先輸入n,然後n行輸入n個正整數,每個數表示每個組的比賽成績。

輸出描述:

輸出至少需要多少w的獎金

輸入例子:

10

20 32

12 32

45 11

21 31

41 33

輸出例子:

20
搜狗

題意分析:先說下思路,一開始只是考慮到11,21,32,54,11,22這種情況的,設想的是如果遇到比前乙個大的就

加一,如果遇到比前面小的就初始化為1,弄乙個陣列存這些數,但是如果遇到下面這種情況就不行了,例如:11,21,32,54,33,22,11,這樣的話,會導致答案錯誤。解決辦法的是弄兩個陣列,乙個陣列按照正常的順序遍歷,另乙個陣列倒序遍歷,然後比較兩個陣列的值,取較大的值即可。

綜上,兩個方向(正向和反向)都滿足自己的獎金要大於比自己成績低的團隊的獎金, 對兩個方向的各個位置去最大值再求和,即為最後的結果。

import sys

while true:

line = sys.stdin.readline()

if not line:

break

line = int(line.strip())

# create a list, length is line

res1 = [1] * line

res2 = [1] * line

result =

for i in range(line):

for i in range(1, line):

if result[i] > result[i - 1]:

res1[i] = res1[i - 1] + 1

for i in range(line - 2, -1, -1):

if result[i] > result[i + 1]:

res2[i] = res2[i + 1] + 1

print sum([max(x, y) for x, y in zip(res1, res2)])

搜狐發獎金

程式設計題 發獎金 時間限制 1秒 空間限制 32768k 狐進行了一次黑客馬拉松大賽,全公司一共分為了n個組,每組乙個房間排成一排開始比賽,比賽結束後沒有公布成績,但是每個組能夠看到自己相鄰的兩個組裡比自己成績低的組的成績,比賽結束之後要發獎金,以1w為單位,每個組都至少會發1w的獎金,另外,如果...

C 小李發獎金

時間限制 1 sec 記憶體限制 128 mb 題目描述 當然打撞球只是小李的休閒娛樂活動,對待他的本職工作,他還是非常兢兢業業的。但是小李的老闆是個周扒皮,每次都想剋扣小李的工資和獎金,甚至制定出非常奇葩的規則。又到了每年發年終獎的時候了,今年老闆的規則是這樣的 給你n個數,每次你可以對任意乙個數...

1063 發獎學金咯

發獎學金咯 time limit 1000ms memory limit 65536k total submit 208 accepted 115 description input 輸入資料報含多個測試例項,每個測試例項的第一行是乙個整數n n 100 表示同鞋的人數,然後是n個同鞋的工資。n 0...