狐進行了一次黑客馬拉松大賽,全公司一共分為了n個組,每組乙個房間排成一排開始比賽,比賽結束後沒有公布成績,但是每個組能夠看到自己相鄰的兩個組裡比自己成績低的組的成績,比賽結束之後要發獎金,以1w為單位,每個組都至少會發1w的獎金,另外,如果乙個組發現自己的獎金沒有高於比自己成績低的組發的獎金,就會不滿意,作為比賽的組織方,根據成績計算出至少需要發多少獎金才能讓所有的組滿意。
輸入描述:
每組資料先輸入n,然後n行輸入n個正整數,每個數表示每個組的比賽成績。
輸出描述:
輸出至少需要多少w的獎金
輸入例子:
1020 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...