合併果子 堆的應用

2021-07-22 05:35:58 字數 653 閱讀 6399

合併果子人人皆知,然而這並不是dp,是可以每次選最小的就可以對,

but我直接暴力,神奇的tle了!

於是乎,我用了堆

int d[100000]; //堆

int main()

}int len=n,ans=0;

while(len>1)

s+=d[1]; //再取一次最小值

d[1]=d[len--];

//d[len+1]=0;

u=1;

while(len>=u*2 && d[u]>d[u*2] ||len>=u*2+1 && d[u]>d[u*2+1])

ans+=s; //合併果子後又放入堆中,最後剩下的即是解....

d[++len]=s;

u=len;

while(u>1 && d[u]2])

}cout

/解return

0;}

Codeup堆 合併果子(堆)

在乙個果園裡,多多已經將所有的果子打了下來,而且按果子的不同種類分成了不同的堆。多多決定把所有的果子合成一堆。每一次合併,多多可以把兩堆果子合併到一起,消耗的體力等於兩堆果子的重量之和。可以看出,所有的果子經過n 1次合併之後,就只剩下一堆了。多多在合併果子時總共消耗的體力等於每次合併所耗體力之和。...

堆 合併果子(C )

description 在乙個果園裡,多多已經將所有的果子打了下來,而且按果子的不同種類分成了不同的堆。多多決定把所有的果子合成一堆。每一次合併,多多可以把兩堆果子合併到一起,消耗的體力等於兩堆果子的重量之和。可以看出 所有的果子經過n 1次合併之後,就只剩下一堆了。多多在合併果子時總共消耗的體力等...

堆 優先佇列 合併果子 fruit

時間限制 1000 ms 記憶體限制 65536 kb 提交數 564 通過數 356 在乙個果園裡,多多已經將所有的果子打了下來,而且按果子的不同種類分成了不同的堆。多多決定把所有的果子合成一堆。每一次合併,多多可以把兩堆果子合併到一起,消耗的體力等於兩堆果子的重量之和。可以看出,所有的果子經過n...