CSU1588 合併果子(貪心)
思路:每次優先合併最小的兩堆,但若每次合併後都進行排序,會造成TE,本文采取氣泡排序,每次只排出最小的兩個。
程式碼如下:
#include<cstdio> #include<algorithm> using namespace std; int T,n,a[1100],s; int main() { scanf("%d",&T); while(T--) { scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d",&a[i]); s=0; while(n>1) { int m = 2;//氣泡排序,每次只排最小的兩個 while (m--) { for (int j = 0; j<n; j++) { if (a[j]<a[j + 1]) { int k = a[j]; a[j] = a[j + 1]; a[j + 1] = k; } } } a[n - 2] = a[n - 1] + a[n - 2]; s = s + a[n - 2]; n--; } printf("%d\n",s); } return 0; }
相關推薦
CSU1588 合併果子(貪心)
題目:現在有n堆果子,第i堆有ai個果子。現在要把這些果子合併成一堆,每次合併的代價是兩堆果子的總果子數。求合併所有果子的最小代價。 思路:每次優先合併最小的兩堆,但若每次合併後都進行排序,會造成TE
合併果子(貪心+優先佇列)
現在有n堆果子,第i堆有ai個果子。現在要把這些果子合併成一堆,每次合併的代價是兩堆果子的總果子數。求合併所有果子的最小代價。 Input 第一行包含一個整數T(T<=50),表示資料組數。 每組資料第一行包含一個整數n(2<=n<=1000),表示果子的堆數。 第二行包含n個正整數ai(
NOIP2004合併果子(提高組T2)————優先佇列STL,貪心
題解:本題主要考查優先佇列STL,貪心。若要體力最小,就要將最小的果合併,合併後的果子再入隊。 程式碼如下: #include<iostream> #include<queue> using namespace std; priority_queue<in
【貪心】CODE[VS] 1063 NOIP2004普及組-合併果子 (刷題記錄(模擬+優先佇列))
日常水題 貪心策略:每次找代價最小的兩對合並,用小根堆來維護,每次合併之後將當前合併結果重新推入佇列,直到合併完成(n-1次) 程式碼如下 #include <cstdio>
合併果子(佇列和優先佇列)
有兩種方法 一種是佇列 一種是優先佇列(priority_queue) 這兩種方法的區別是佇列定義時沒有自動排序 所以只能在輸入的時候按順序才能輸出正解(所以佇列的方法不被認為是正解) 下面是程式碼 比較簡便: #include<bits/stdc++.h> using na
合併果子(小根堆 手打)
題目描述 在一個果園裡,多多已經將所有的果子打了下來,而且按果子的不同種類分成了不同的堆。多多決定把所有的果子合成一堆。 每一次合併,多多可以把兩堆果子合併到一起,消耗的體力等於兩堆果子的重量之和。可以看出,所有的果子經過 n-1n−1 次合併之後, 就只剩
合併果子(STL堆排序)
合併果子 來源: 2004年NOIP全國聯賽普及組 題目描述: 在一個果園裡,多多已經將所有的果子打了下來,而且按果子的不同種類分成了不同的堆。多多決定把所有的果子合成一堆。 每一次合併,多多可以把兩堆果子合併到一起,消耗的體力等於兩堆果子的重量之和。
NOIP提高組2004 合併果子(優先佇列排序)
從oj上看到一道問題,合併果子,題意如下: 1171.合併果子 Time Limit: 1000 MS Memory Limit: 32768 KB Total Submission(s): 77 Accepted Submission(s):
CSU-1588 合併果子(堆/單調佇列)
題意 有 nn 堆果子,第 ii 堆果子有 aiai 個,每次合併的代價是兩堆果子個數的總和,求總合並的最小代價。 1≤n≤10001≤n≤1000 思路 堆(優先佇列)的做法已經眾所周知,複雜
BZOJ 3399 [Usaco2009 Mar]Sand Castle城堡(貪心)
castle con name 個數 blank 調整 can 貪心 pro 【題目鏈接】 http://www.lydsy.com/JudgeOnline/problem.php?id=3399 【題目大意】 將一個集合調整成另一個集合中的數,把一個
HDU 1051: Wooden Sticks(貪心)
memory others sticks mac resp setup cto ret cst Wooden Sticks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768
HDU 4415 Assassin's Creed(貪心)
all ria put space clas name 它的 tor problem pid=4415">HDU 4415 題意: 壯哉我Assassin! E叔有一柄耐久度為m的袖劍,以及n個目標士兵要去解決。 每解決掉一個士兵,消耗袖劍Ai的
hdu 4882 ZCC Loves Codefires(貪心)
string.h struct hdu cmp using return 貪心 ace algo # include<stdio.h> # include <algorithm> # include <string.h> usin
[LeetCode]Wildcard Matching 通配符匹配(貪心)
復雜度 能夠 sts als [0 popu tco ret lee 一開始採用遞歸寫。TLE。 class Solution { public: bool flag; int n,m; void dfs(int id0,const char *s,in
POJ 3069 Saruman's Army (貪心)
依次 至少 一個 ide mage != cnblogs style man 題目大意:直線上有N個點,點i的位置是Xi,從這N個點中選取若幹,給他們加上標記,對每一個點,其距離為R以內的區域內必須有被標記的點。求至少需要多少個點被標記。 題目思路:設最左邊的點:點p的
POJ 3253 Fence Repair (貪心)
復雜度 image ace 長度 復雜 節點 clas math 個數 題意:將一塊木板切成N塊,長度分別為:a1,a2,……an,每次切割木板的開銷為當前木板的長度。求出按照要求將木板切割完畢後的最小開銷。 思路:比較奇特的貪心 每次切割都會將當前木板一分為二,可以按
建築維修(貪心)
ros bsp tor clas urn 接下來 gin 一個數 表示 入侵者。但是T部落的基地裏已經有N個建築設施受到了嚴重的損傷,如果不盡快修復的話,這些建築設施將會完全毀壞。現在的情況是:T部落基地裏只有一個修理工人,雖然他能瞬間到達任何一個建築,但是修復每個建築都需
POJ 2376 Cleaning Shifts(貪心)
des always == col contain print eight ide weight Description Farmer John is assigning some of his N (1 <= N <= 25,000) cows
UvaLive 4863 Balloons(貪心)
這樣的 給定 ons urn 們的 bool div clu truct 題意: 給定n個隊伍, 然後A房間有a個氣球, B房間有b個氣球, 然後給出每個隊伍所需要的氣球數量和到A B房間的距離, 求把氣球全部送到每個隊伍的最短距離. 分析: 在氣球充足的情況下, 那麽我們
51Nod 1344 走格子 (貪心)
ret 機器人 const ani 能夠 貪心 nod 多少 整數 有編號1-n的n個格子,機器人從1號格子順序向後走,一直走到n號格子,並需要從n號格子走出去。機器人有一個初始能量,每個格子對應一個整數A[i],表示這個格子的能量值。如果A[i] > 0,機器人走