在乙個果園裡,多多已經將所有的果子打了下來,而且按果子的不同種類分成了不同的堆。多多決定把所有的果子合成一堆。
每一次合併,多多可以把兩堆果子合併到一起,消耗的體力等於兩堆果子的重量之和。可以看出,所有的果子經過n-1次合併之後,就只剩下一堆了。多多在合併果子時總共消耗的體力等於每次合併所耗體力之和。
因為還要花大力氣把這些果子搬回家,所以多多在合併果子時要盡可能地節省體力。假定每個果子重量都為1,並且已知果子的種類數和每種果子的數目,你的任務是設計出合併的次序方案,使多多耗費的體力最少,並輸出這個最小的體力耗費值。
例如有3種果子,數目依次為1,2,9。可以先將1、2堆合併,新堆數目為3,耗費體力為3。接著,將新堆與原先的第三堆合併,又得到新的堆,數目為12,耗費體力為12。所以多多總共耗費體力=3+12=15。可以證明15為最小的體力耗費值。
輸入包括兩行,第一行是乙個整數n(1<=n<=10000),表示果子的種類數。第二行包含n個整數,用空格分隔,第i個整數ai
(1<=ai
<=10000)是第i種果子的數目。
輸出包括一行,這一行只包含乙個整數,也就是最小的體力耗費值。輸入資料保證這個值小於231
。測試用例1:
測試輸入:
31 2 9
測試輸出:
15
題解:
這是一道經典貪心題目,每次要找出n堆果子中最小的兩堆,合併,然後把和並後的果子加入原來的陣列中,再找最小的兩個,總共找n-1次,到最後只有一堆果子剩下,每次合併都記一下耗費體力值。有個問題就是如何找最小的兩個值,如果每次都排序那麼肯定tle,所以不行,直接找最小的,用min1,min2,為防止乙個最小的數被找兩次,或者沒被找到,可以用乙個vis標記一下,找過了就為1,沒找過就為0;
ac**:
小學期 掃雷
你玩兒過掃雷遊戲吧?有個作業系統中帶了這個小遊戲,那個系統叫什麼來著?在遊戲中要想過關,就必須要在乙個 nxm 的區域上找出所有的地雷。遊戲過程中,計算機會在地圖上顯示一些數字從而幫助你確定 有地雷。例如,在下面這個有兩顆地雷的 4x4 的地圖 表示地雷 根據上面的地圖,可以計算出應該提供給遊戲者的...
小學期活動
現在我是大二,這學期的小學期是進行軟體實習。想想去年這個時候是在學校的烈日下參加軍訓。不過這學期小學期的任務還是很重的,不是一般的重。感覺比平時上課時候要緊張多了。說說現在完成的進度。小學期的前半部分的上課階段已經在今天結束了。職業溝通課程已經結束了,其間完成一系列活動,主要有模擬公司的招聘的活動,...
夏季小學期
夏季小學期 825172?fr aladdin 夏季小學期一般指在春季學期結束後,額外增加的若干周較短的上課時間,與春 秋季學期組成 兩長加一短 的形式,並以此為週期安排全學年教學任務。這也是諸多世界名校普遍採用的學期制度。目前國內開設夏季小學期的主要有北京大學 清華大學 華東師範大學 中國政法大學...