019搜狐暢遊 分玩具

2021-09-28 05:01:16 字數 1975 閱讀 5501

問題描述:

幼兒園裡有有m個小朋友在課件玩耍,每個人手中現有ni個玩具。為了公平起見,老師需要讓每個小朋友手中有相同數量的玩具。假設老師每次只能從乙個人手中拿走兩個玩具並給另乙個小朋友。求老師最少需要做多少次這樣的玩具轉移。如果不存在可行的方案則輸出-1。

輸入描述:

每個輸入包含乙個測試用例。每個測試用例的第一行包含乙個整數m(1 <= m<= 100),接下來的一行包含m個整數ni(1 <= ni <= 100)。

輸出描述:

輸出一行表示最少需要移動多少次可以平分蘋果,如果方案不存在則輸出-1。

樣例輸入1:

4715

95

樣例輸出1:

3
樣例輸入2:

2

36

樣例輸出2:

-

1

思路:

這題分析之後我們可以得到以下結論:

然後我們可以選取分玩具的策略: 每次都從當前最多的人當中剝奪,賞給最少的。期間用剛剛的判斷邏輯來判斷是否返回-1。 剝奪一次計數一次。

我選擇了用字典進行處理,因為字典查詢速度快。

ac**:

def

solution()

: m =

int(

input()

) data =

list

(map

(int

,input()

.split())

)ifsum(data)

%m:# 判定邏輯1

return-1

i =0while i < m-1:

# 判定邏輯2

ifabs

(data[i]

-data[i+1]

)%2:

return-1

i +=

1 dic =

dict()

for i in data:

if i in dic:

dic[i]+=1

else

: dic[i]=1

cont =

0while

len(dic)

>1:

iflen

(dic)==2

andmax

(dic)

-min

(dic)//2

%2:print

(dic)

return-1

cont +=

1 dic[

max(dic)]-=

1 dic[

min(dic)]-=

1ifmin(dic)+2

in dic:

dic[

min(dic)+2

]+=1else

: dic[

min(dic)+2

]=1if

max(dic)-2

in dic:

dic[

max(dic)-2

]+=1else

: dic[

max(dic)-2

]=1if dic[

max(dic)]==

0:del dic[

max(dic)

]if dic[

min(dic)]==

0:del dic[

min(dic)

]return cont

print

(solution(

))

搜狐暢遊2021屆校園招聘簡章

二 招聘物件 2021屆校園招聘主要面向2021屆畢業生,在技術 美術 策劃 營銷 運營 職能等多個大類都有廣泛需求。詳細職位 崗位職責職能說明書見下文網申入口。21屆是指畢業時間2020年9月 2021年9月的校招生 ps 接受教育部認可的新版非全日制同學投遞。不限專業 遊戲文娛企業招生不限專業,...

週末北大學拳散記 搜狐暢遊招聘

每週日早上都去北大俄文樓學習吳式太極拳,已堅持快5年了。左邊是程式設計師 左邊第二列是3d程式設計師 右邊是行政人員 大家看到沒有?要想找到好工作的機會,研究3d吧,競爭人員少很多啊。我們的太極拳文老師,明年就要七十五歲了。文老師教拳時,經常讓我試手。這天也不例外,示範擺好一姿勢,我去用手一扶老師拳...

搜狐暢遊的免費開源遊戲引擎Genesis 3D

用過unity3d的朋友會發現,genesis 3d的介面非常類似於unity3d 主選單都是 新建工程 新建場景 在場景樹中可以建立攝像頭 立方體 粒子 燈光等 在左下角的 工程 中可以建立c 指令碼 材質 精靈等 螢幕中間區域是場景編輯器,可以到 遊戲 標籤中檢視預覽效果 指令碼編輯器也是使用m...