摘要:
问题描述 n 个小朋友站成一排。现在要把他们按身高从低到高的顺序排列,但是每次只能交换位置相邻的两个小朋友。 每个小朋友都有一个不高兴的程度。开始的时候,所有小朋友的不高兴程度都是0。 如果某个小朋友第一次被要求交换,则他的不高兴程度增加1,如果第二次要求他交换,则他的不高兴程度增加2(即不高兴程度为3),依次类推。当要求某个小朋友第k次交换时,他的不高兴程度增加k。 请问,要让所有小朋友... 阅读全文
摘要:
1.介绍优先队列是一种容器,它可以使得其第一个元素始终是它包含的最大元素,具体实现原理是堆排序。它支持以下操作:empty()size()top()push()pop()在使用priority_queue之前,请包含头文件#include 2.具体用法#include#include#include#include #include using namespace std;int main(){ ... 阅读全文
摘要:
1.make_heap()make_heap()用于把一个可迭代容器变成一个堆,默认是大顶堆。它有三个参数。第一个参数是指向开始元素的迭代器,第二个参数是指向最末尾元素的迭代器,第三个参数是less()或是greater(),前者用于生成大顶堆,后者用于生成小顶堆,第三个参数默认情况下为less(),less()用于生成大顶堆。要使用less(),以及greater(),请添加头文件#includ... 阅读全文
摘要:
题目描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过 n-1n−1 次合并之后, 就只剩下一堆了。多多在合并果子时总共消耗的体力等 阅读全文