分析這道題考查的是堆,我們首先取出兩個最小的數,合併然後再加入到堆中,並調整堆結構,因為取的是最小的數,所以採用小根堆,這道題也可以用優先佇列來做,下面採用的是手動模擬堆的方式。
#include#include#includeusing namespace std;
#define n 10000 + 10
int heap[n],cnt;
int n,ans;
//模擬小根堆
void push(int x)//向上調整
void pop()
else break; }}
int main()
int t;
while(--n)
printf("%d\n",ans);
return 0;
}
codevs 1063 合併果子
中午一看到這題,馬上想起了能量項鍊的那個模型,即區間型的dp,完全沒有注意到n的範圍,犯了先入為主的錯誤 下午回到學校馬上就去寫這個幾乎是模板的 提交直接mle,才發現n的最大值為10000,dp n n 的大小為 10000 10000 4 bytes 乙個int為32 4 9 bits,即4個位...
Codevs 1063 合併果子
時間限制 1 s 空間限制 128000 kb 題目等級 鑽石 diamond description 在乙個果園裡,多多已經將所有的果子打了下來,而且按果子的不同種類分成了不同的堆。多多決定把所有的果子合成一堆。每一次合併,多多可以把兩堆果子合併到一起,消耗的體力等於兩堆果子的重量之和。可以看出,...
codevs 1063 合併果子
1063 合併果子 2004年noip全國聯賽普及組 時間限制 1 s 空間限制 128000 kb 題目等級 鑽石 diamond description 在乙個果園裡,多多已經將所有的果子打了下來,而且按果子的不同種類分成了不同的堆。多多決定把所有的果子合成一堆。每一次合併,多多可以把兩堆果子合...