从品牌网站建设到网络营销策划,从策略到执行的一站式服务
这个题我第一次的想法就是把数据从小到大,然后依次合并,最后就能得到结果!
后来发现,虽然最小的两个合并,但是可能两个小的合并后的数据大于下一个,再次合并就是有问题的。因此要对得到后的数据进行排序再依次合并。
此时,如果用普通的数组和sort函数的话必定会超时,因此我们这里可以用到优先队列,下面附上一些用法。
#include//头文件
priority_queue//定义
priority_queue,greater>q;//升序队列
priority_queue,less>q;//降序队列
priority_queuea//此时默认为降序队列
//greater和less是std实现的两个仿函数(就是使一个类的使用看上去像一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了)
之后本题就很好解决了,下面附上代码
#include#include
#includeusing namespace std;
const int N = 10005;
priority_queue, greater>a;
int main()
{
int n;
int c, x, y;
long long k = 0;
cin >>n;
for (int i = 1; i<= n; i++)
{
cin >>c;
a.push(c);
}
for (int i = 1; i<= n-1 ; i++)
{
x = a.top();
a.pop();
y = a.top();
a.pop();
a.push(x + y);
k += x + y;
}
cout<< k;
return 0;
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图