问一下直接sort升序排列为什么不行?

P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G

答案不对的
by 小粉兔 @ 2018-06-23 16:51:45


@[jkllage456](/space/show?uid=101521) 两堆合起来,成为一堆,还要放进去啊.
by 向noip冲刺 @ 2018-06-23 16:52:06


你的贪心有问题,这里有一个反例: `1 1 1 1` 正确的是前两个合并,后两个合并,再一起合并,代价是`2+2+4=8`。 你的是按顺序合并,代价是`2+3+4=9`。
by 小粉兔 @ 2018-06-23 16:53:57


@[小粉兔](/space/show?uid=10703) 哦哦,你这样一说我就get了,谢谢。
by jkllage456 @ 2018-06-23 16:55:48


@[jkllage456](/space/show?uid=101521) 而且纯sort超时,优先队列试试
by 花千树 @ 2018-06-23 17:12:28


有个剧毒的方法可以:重复操作下面几步 (1)升序排序 (2)合并(1)(2)并计算花费 (3)将合并形成的一堆加入数组 同时有个技巧,就用一种特殊冒泡,就一重循环因为每次只要排出最小的
by 南方小包 @ 2018-06-23 17:21:00


因为果子的位置无法直接移动吧,必须得相邻两个合并
by 石见 @ 2018-06-26 08:41:12


合并成新的堆后顺序还要重排
by ldy6314 @ 2018-06-30 21:53:44


|