問題描述:
幼兒園裡有有m個小朋友在課件玩耍,每個人手中現有ni個玩具。為了公平起見,老師需要讓每個小朋友手中有相同數量的玩具。假設老師每次只能從乙個人手中拿走兩個玩具並給另乙個小朋友。求老師最少需要做多少次這樣的玩具轉移。如果不存在可行的方案則輸出-1。輸入描述:
每個輸入包含乙個測試用例。每個測試用例的第一行包含乙個整數m(1 <= m<= 100),接下來的一行包含m個整數ni(1 <= ni <= 100)。輸出描述:
輸出一行表示最少需要移動多少次可以平分蘋果,如果方案不存在則輸出-1。樣例輸入1:
4715
95
樣例輸出1:
3
樣例輸入2:
2
36
樣例輸出2:
-
1
思路:
這題分析之後我們可以得到以下結論:ac**:然後我們可以選取分玩具的策略: 每次都從當前最多的人當中剝奪,賞給最少的。期間用剛剛的判斷邏輯來判斷是否返回-1。 剝奪一次計數一次。
我選擇了用字典進行處理,因為字典查詢速度快。
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...