python 2020演算法筆試題目 視野爭奪

2021-10-04 20:59:05 字數 2455 閱讀 4734

小q在進行一場競技遊戲,這場遊戲的勝負關鍵就在於能否能爭奪一條長度為l的河道,即可以看作是[0,l]的一條數軸。

這款競技遊戲當中有n個可以提供視野的道具−真視守衛,第i個真視守衛能夠覆蓋區間[xi,yi]。現在小q想知道至少用幾個真視守衛就可以覆蓋整段河道。

輸入描述:

輸入包括n+1行。

第一行包括兩個正整數n和l(1<=n<=105,1<=l<=109)

接下來的n行,每行兩個正整數xi,yi(0<=xi<=yi<=109),表示第i個真視守衛覆蓋的區間。

輸出描述:

乙個整數,表示最少需要的真視守衛數量, 如果無解, 輸出-1。

輸入例子1:

4 63 6

2 40 2

4 7輸出例子1:

(這道題自己踩雷了,還有乙個無解的情況,題目說輸出-1,讀題仔細很重要)

演算法思路

(1)首先要對所有守衛(x,y)根據x排序,對於最新選出的[xi, yi]最大延伸長度為yi;

(2)選出守衛的x小於xi的守衛,遍歷查詢哪個y延伸的最遠

(3)得到新的[xj, yj]和最大延伸長度yj,返回(1)

題目要求的輸入格式

a =

list((

map(

lambda x:

int(x)

,input()

.split())

))n, l = a[0]

,a[1

]eyes =

for i in

range

(n):

list((

map(

lambda x:

int(x)

,input()

.split()))))

模擬乙個輸入

n=

11l=

28eyes =[[

0,3]

,[5,

24],[

8,27]

,[9,

19],[

3,17]

,[13,

18],[

9,25]

,[19,

29],[

12,15]

,[25,

29],[

0,6]

]

eyes.sort(

)end =

0max_length =

0time =

1#需要的守衛,剛開始就要有乙個

for i in

range

(n):

if max_length>=l:

break

#長度達到退出

if eyes[i][0

]>end:

#如果中間空開了,比如【0,6】和【8,27】那麼說明中間必有乙個

time +=

1#守衛數量+1

end = max_length

max_length =

max(eyes[i][1

], max_length)

#***

elif eyes[i][1

]>max_length:

#如果和前乙個仍然是重疊關係,且延伸長度更長,更新最大延伸長度

max_length = eyes[i][1

]print

(time)

eyes.sort(

)def

eye_search

(eye_y,eye_list)

: length =

[i[1

]-eye_y for i in eye_list if i[0]

<=eye_y]

; turn =

len(length)

choose = eye_list[length.index(

max(length))]

#被選中的孩子

return choose[1]

,eye_list[turn:

]eye_y=eyes[0]

[0]eye_list = eyes

eye_time =

0while

len(eye_list)

>

0and eye_y

eye_time +=

1 eye_y, eye_list = eye_search(eye_y=eye_y, eye_list=eye_list)

print

(eye_time)

這道題有無解的情況,輸出的時候要注意,這裡就不寫了,溜了。

python 2020演算法筆試題目 逛街

小q在週末的時候和他的小夥伴來到大城市逛街,一條步行街上有很多高樓,共有n座高樓排成一行。小q從第一棟一直走到了最後一棟,小q從來都沒有見到這麼多的樓,所以他想知道他在每棟樓的位置處能看到多少棟樓呢?當前面的樓的高度大於等於後面的樓時,後面的樓將被擋住 輸入描述 輸入第一行將包含乙個數字n,代表樓的...

python 2020微光 筆試01 分辨復讀機

知識點與收穫 成電微光工作室2020筆試第一題,下一屆想進入微光工作室的成電小夥伴可以來康康。題目給出這樣一段txt檔案 a 小夥子最近怎麼樣 b 最近在參加微光工作室的招新 a 感覺怎樣 b 感覺好多題有點難 a 那咋辦嘛 b 那咋辦嘛 a 那咋辦嘛 b 那咋辦嘛 a 那咋辦嘛 b 那我能咋辦嘛 ...

筆試題 2020華為筆試

i j k p,0測試用例 120,3 12,1 題目描述 乙個矩陣,5 5,取相鄰 二個成員有乙個邊是相同的 的6個,輸入乙個6個成員列表,判斷是否滿足?矩陣成員如下 1,2,3,4,5 11,12,13,14,15 21,22,23,24,25 31,32,33,34,35 41,42,43,4...