NOIP2004合併果子(提高組T2)————優先佇列STL,貪心
題解:本題主要考查優先佇列STL,貪心。若要體力最小,就要將最小的果合併,合併後的果子再入隊。
程式碼如下:
#include<iostream> #include<queue> using namespace std; priority_queue<int,vector<int>,greater<int> >b; int i,a,n,q,p,num=0; int main() { cin>>n; for(i=1;i<=n;i++) { cin>>a; b.push(a); } while(2<=b.size()) { q=b.top();b.pop(); p=b.top();b.pop(); num=num+q+p; b.push(q+p); } cout<<num; return 0; }
相關推薦
NOIP2004合併果子(提高組T2)————優先佇列STL,貪心
題解:本題主要考查優先佇列STL,貪心。若要體力最小,就要將最小的果合併,合併後的果子再入隊。 程式碼如下: #include<iostream> #include<queue> using namespace std; priority_queue<in
NOIP2004合唱隊列(提高組T3)————單調佇列,動態規劃(最長上升序列,最長下降序列)
題解:本題主要考查單調佇列,動態規劃(最長上升序列,最長下降序列)。這個序列是一箇中間高,兩頭底的序列,先解決從T1到Ti這一段單調遞增的序列,再解決Ti到TK這一段單調遞減的序列(注意數值的更新)。 程式碼如下: #include<iostream> #include<
NOIP2008排座位(普及組T2)————貪心,排序
題解:本題主要考查貪心,排序。先記錄行列的分隔數,再排序將需要裝入桶中(重點,因為要輸出的不只是最大值的序號)。 程式碼如下: #include<iostream> #include<algorithm> using namespace std; int m,n,
NOIP機器翻譯(提高組T1)————佇列,模擬
題解:本題主要考查佇列,模擬,用兩個陣列一個記錄單詞在不在記憶體中,一個做標記。用指標r指向隊首若記憶體滿了,刪除並指標右移。 程式碼如下: #include<iostream> using namespace std; int n,m,i,j,r=1,q=0,num=0;
NOIP2010接水問題(普及組T2)————模擬,佇列
題解:本題主要考查模擬,佇列,因為順序已經擺好了,所以關鍵在於節水結束時的替換,將下個的量賦給已結束的,就可以啦。 程式碼如下: #include <iostream> using namespace std; int s[11000],num,t,n,m; int
NOIP2007統計數字(提高組T1)————STL
題解:本題資料較大,一些排序演算法不可行。因此用sort便是很好的方法。 程式碼如下: #include<iostream> #include<algorithm> using namespace std; int a[222222]
1038C】Gambling (博弈問題,優先佇列模擬,貪心)
題幹: Two players A and B have a list of nn integers each. They both want to maximize the subtraction between their score and their opponen
【貪心】CODE[VS] 1063 NOIP2004普及組-合併果子 (刷題記錄(模擬+優先佇列))
日常水題 貪心策略:每次找代價最小的兩對合並,用小根堆來維護,每次合併之後將當前合併結果重新推入佇列,直到合併完成(n-1次) 程式碼如下 #include <cstdio>
NOIP提高組2004 合併果子(優先佇列排序)
從oj上看到一道問題,合併果子,題意如下: 1171.合併果子 Time Limit: 1000 MS Memory Limit: 32768 KB Total Submission(s): 77 Accepted Submission(s):
SSL2834 2017年11月4日提高組T2 揹包(二分)
2017年11月4日提高組T2 揹包 Description 蛤布斯有n種商品,第i種物品的價格為ai,價值為bi。有m個人來向蛤布斯購買商品,每個人每種物品只能購買一個。第j個人有cj的錢,他會不停選擇一個能買得起的價格最高的商品買走(如果有多個則選擇價值
洛谷 P1125 笨小猴(NOIp2008提高組T1)
end ans 小寫字母 else 代碼 整數 turn clas efi 題目描述 笨小猴的詞匯量很小,所以每次做英語選擇題的時候都很頭疼。但是他找到了一種方法,經試驗證明,用這種方法去選擇選項的時候選對的幾率非常大! 這種方法的具體描述如下:假設maxn是單詞中出現次數
洛谷 P2827 蚯蚓(NOIp2016提高組D2T2)
mat 希望 c++ ffffff define fff 空行 特殊 到來 題目描述 本題中,我們將用符號?c?表示對c向下取整,例如:?3.0?=?3.1?=?3.9?=3。 蛐蛐國最近蚯蚓成災了!隔壁跳蚤國的跳蚤也拿蚯蚓們沒辦法,蛐蛐國王只好去請神刀手來幫他們消滅蚯蚓。
NOIP導彈攔截(提高組)————最長不上不上生子序列
題解:本題主要考查最長不上不上生子序列,經典的dp基礎題 程式碼如下: #include<iostream> #include<cstdio> #include<algorithm> using namespace std; int n=0,i,j,s
NOIp2004花生採摘(普及組)————搜尋,模擬
題解:本題主要考查搜尋,模擬,要審題別把題目複雜化。關鍵在於算時間,與前一個的座標差再加採摘時間這就是時間。 程式碼如下: #include<bits/stdc++.h> using namespace std; int m,n,i,j,gg=1,t,lo,sum; stru
合併果子(佇列和優先佇列)
有兩種方法 一種是佇列 一種是優先佇列(priority_queue) 這兩種方法的區別是佇列定義時沒有自動排序 所以只能在輸入的時候按順序才能輸出正解(所以佇列的方法不被認為是正解) 下面是程式碼 比較簡便: #include<bits/stdc++.h> using na
合併果子(小根堆 手打)
題目描述 在一個果園裡,多多已經將所有的果子打了下來,而且按果子的不同種類分成了不同的堆。多多決定把所有的果子合成一堆。 每一次合併,多多可以把兩堆果子合併到一起,消耗的體力等於兩堆果子的重量之和。可以看出,所有的果子經過 n-1n−1 次合併之後, 就只剩
CSU1588 合併果子(貪心)
題目:現在有n堆果子,第i堆有ai個果子。現在要把這些果子合併成一堆,每次合併的代價是兩堆果子的總果子數。求合併所有果子的最小代價。 思路:每次優先合併最小的兩堆,但若每次合併後都進行排序,會造成TE
合併果子(STL堆排序)
合併果子 來源: 2004年NOIP全國聯賽普及組 題目描述: 在一個果園裡,多多已經將所有的果子打了下來,而且按果子的不同種類分成了不同的堆。多多決定把所有的果子合成一堆。 每一次合併,多多可以把兩堆果子合併到一起,消耗的體力等於兩堆果子的重量之和。
【華容道】題解(NOIP2013提高組day2)
分析 這道題很容易想到令f[x][y][x1][y1]表示空白塊在(x,y)、指定棋子在(x1,y1)時的最少步數,讓空白塊和四周的棋子交換,當空白塊要和指定棋子交換時,把指定棋子移動,搞一下BFS就可以了,時間複雜度O(qn^2m^2),可以拿60+。 因
合併果子(貪心+優先佇列)
現在有n堆果子,第i堆有ai個果子。現在要把這些果子合併成一堆,每次合併的代價是兩堆果子的總果子數。求合併所有果子的最小代價。 Input 第一行包含一個整數T(T<=50),表示資料組數。 每組資料第一行包含一個整數n(2<=n<=1000),表示果子的堆數。 第二行包含n個正整數ai(